Какое лучшее веб-картографическое решение с открытым исходным кодом для обработки более 3000 полигонов [закрыто]

12

У меня более 3000 полигонов, которые представляют водоразделы (18 основных водосборов). На первом этапе будут показаны все 18 водоразделов, а их список будет размещен на левой боковой панели. Если какой-либо пользователь наведет курсор мыши на карту, всплывающее окно покажет название водораздела. Если пользователь щелкнет по любому значительному водоразделу на карте, откроется всплывающее окно с подробной информацией. При большем увеличении все водоразделы будут отображаться.

Я прошу вашего совета, какое решение с открытым исходным кодом лучше всего подходит для обработки такого большого количества полигонов?

Я думал о Leaflet или OpenLayers, но я не знаю, могут ли они обрабатывать большое количество полигонов.

Кроме того, вы предлагаете хранить их в MySQL или?

againstflow
источник
3
Можете ли вы растеризовать эти полигоны? или, возможно, использовать сервер объектов, такой как геосервер или сервер функций?
Дассуки

Ответы:

12

Я хотел бы создать сервис изображений (растровый слой) и предоставить его через Web Map Service (WMS) . Таким образом, вы можете использовать любой API-интерфейс, который вам удобен, если он поддерживает WMS ( OpenLayers делает ). Вы можете использовать WMS, чтобы отобразить слой всех объектов многоугольника, а затем нажать WF GetFeatureInfo, чтобы получить информацию об этом многоугольнике.

Если по какой-либо причине вам нужны векторные данные на карте, вы можете создать их динамически по клику с данными ответа GetFeatureInfo.

CaptDragon
источник
5

См TileMill , который может растеризацию UTFGrid взаимодействия в MBTiles файл и размещать его на MapBox или с открытым исходным кодом реализацию MBTiles сервера , как TileStache .

Вот это с большим количеством полигонов . Этот подход требует от вас растеризации - иначе говоря, bake - плиток, но, по сути, это единственный способ сделать то, что вы хотите, без огромных ресурсов сервера, специального приложения или очень ограниченного набора браузеров.

tmcw
источник
Мне нравится этот пример. Можете ли вы сказать мне, как я могу растеризовать шейп-файлы? В TileMill? Благодарю.
против потока
Да, это самый распространенный способ. Вот документация по добавлению подсказок таким образом . Если у вас супер-аллергия на инструменты с графическим интерфейсом и на Python / Mapnik pro, есть также такой путь, который избегает всего этого, но немного загадочен.
tmcw
2

Зависимость от масштаба и пространственно индексированная база данных будут ключевыми в этой проблеме. Вы должны быть в состоянии представить водоразделы, используя как минимум два, возможно, три или четыре уровня. Например, вы можете разделить данные на Major (18), Minor (некоторая комбинация всех водосборов среднего масштаба, которые попадают в один и тот же Major) и третичный (3000 полигонов). Это даст вам три разных векторных слоя / услуги.

Используйте зависимость от масштаба, чтобы нарисовать только соответствующий сервис в зависимости от уровня масштабирования пользователя.

Используйте базу данных с пространственной индексацией, чтобы обеспечить быстрое рисование сервисов, и рисуйте только ту часть, которая необходима для заполнения текущего окна просмотра.

В качестве альтернативы, вы можете подумать о создании тайлов карт водораздела (опять же, созданных на основе соответствующих масштабов для каждого слоя) и обслуживать их таким образом.

На этом сайте уже существует множество вопросов, которые рекомендуют соответствующие решения с открытым исходным кодом для использования этих стратегий.


источник
0

В дополнение к TileMill вы можете проверить MangoMap , он не с открытым исходным кодом, но в настоящее время он бесплатный и способен обрабатывать данные такого типа.

[Отказ от ответственности: я работаю с MangoMap, но отвечаю, потому что это уместно в этом случае]

ChrisInCambo
источник