Более

Преобразовать Multipolygon Geojson в несколько полигонов geojson?


Я вижу много вопросов отПолигоныкМультиполигон, но есть ли какой-нибудь простой способ сделать наоборот? Также было бы полезно сохранить атрибуты изМультиполигонприменить к новомуПолигоны.


Если у вас простой мультиполигон, такой как приведенный ниже,

mp = {"тип": "Мультиполигон", "координаты": [[[[-99.028, 46.985], [-99.028, 50.979], [-82.062, 50.979], [-82.062, 47.002], [-99.028, 46.985]]], [[[-109.028, 36.985], [-109.028, 40.979], [-102.062, 40.979], [-102.062, 37.002], [-109.028, 36.985]]]]}

затем с помощью Javascript / Nodejs вы можете получить доступ к каждому составляющему многоугольнику с помощью forEach и записать новый многоугольник с помощью JSON.stringify

mp.coordinates.forEach (функция (координаты) {var feat = {'тип': 'Многоугольник', 'координаты': координаты}; console.log (JSON.stringify (feat));});

Вы также можете получить к ним доступ напрямую в цикле, если вы предпочитаете менее функциональный способ, индексированный на mp.coordinates.length, например,

для (var i = 0; i

Если вы имеете дело с FeatureCollection, где у вас может быть массив функций, каждый из которых содержит MultiPolygon, например,

mp = {"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "MultiPolygon", "координаты": [[[[100.0, 0.0] , [101,0, 0,0], [101,0, 1,0], [100,0, 1,0], [100,0, 0,0]]], [[[0,0, 0,0], [1,0, 0,0], [1,0, 1,0], [0,0, 1.0], [0.0, 0.0]]]]}, "properties": {"prop1": {"this": "that"}, "prop0": "value0"}}]}

Затем вы можете использовать forEach для доступа к каждой функции, а затем получить доступ к каждому полигону в каждом мультиполигоне, просто перебирая массив, поскольку первое измерение массива координат является индексом в каждом полигоне. Обратите внимание, что вы также можете сохранить свойства и назначить их каждому новому объекту Polygon.

mp.features.forEach (function (feat) {var geom = feat.geometry; var props = feat.properties; if (geom.type === 'MultiPolygon') {for (var i = 0; i 

Если вам нужно что-то более сложное, вы можете изменить класс OpenLayers.Format.GeoJSON.


Пространственный индекс RavenDB не строится

Я успешно импортировал геоданные в класс, который я назвал AdministrativeArea, который содержит, среди прочего, поле WKT. Это поле содержит точки координат многоугольника для долготы и широты. Я объявил это строкой. Я хотел бы запросить документы, чтобы узнать, какие из моих полигонов / географических областей содержатся в данном ограничивающем прямоугольнике. Для этого я создал индекс, используя пространственный объект. Кажется, что-то не так с этим индексом или с тем, как я его строю: либо счетчик индекса застрял на 0 и больше ничего не происходит, либо он начинает строиться, но застревает на случайном числе, и я получаю сообщение об ошибке сообщение. Может кто-нибудь поможет?

Вот как я ищу области:

. и пример JSON (есть

Между прочим: есть сотни, если не тысячи точек широты / долготы в каждой из 260 000 областей (я отрезал около 90% координат в приведенном выше примере из соображений экономии места). Может, мой подход просто не подходит для этого случая?

Поведение индексирования RavenDB очень странно для этого: кажется, что он «застревает» в задаче индексирования (ЦП составляет от 20% до 40 $, а потребление ОЗУ увеличивается последовательно, но медленно), но новые записи индекса не создаются, и сообщения об ошибках не появляются. Я запускаю это на ноутбуке с 16 ГБ ОЗУ и i7 с