1. Насчет SQLite — согласен. Но не хочется заводить начинающего пользователя в дебри. Тем более, при работе с SQLite столкнулся с проблемами именования полей. Только короткие, латиница, запрещенные слова «type», «source», «id», и прочее.
2. Географические системы координат — да, но опять же, ставил задачей направить пользователя по кратчайшему маршруту. Хочешь получать географические координаты — настрой слой на систему координат WGS 84.
Насчет эмпирической пользовательской системы — не согласен. Многое зависит от задач.
Из публичной кадастровой карты поворотные точки, по моей информации, не получить никак — надо для каждого участка заказывать кадастровые паспорта. А для принятия управленческих решений на основе визуализированных данных устранение сдвига с любой погрешностью благо.
Кроме того, эта система применяется ведь не к моему слою, а к тому, который выдает ПКК. Так что мы эти данные не храним и не копим.
Кстати, может кто знает, как из ПКК получить контур участка на свой слой?
есть задача сделать себе «наколеночный» редактор слоев карт, которые дальше уже визуализируются средствами JS-библиотек OSM.
… а потом обнаружить, что в полигонах бывают дырки…
… а потом обнаружить, что попадаются еще MULTIPOLIGON и, не приведи господь, CURVEPOLYGON…
… а потом обнаружить, что длина записи для содержимого ячеек Excel 32767 знаков, а WKT каких-то объектов вылезает далеко за эти пределы…
Речь идет о том, чтобы самому наносить объекты. Так что вероятность таких проблем минимальна.
Если изменения не очень частые, то вручную бы взял координаты из QGIS, обработал и слепил бы строки в Excel. Или, если требуется постоянная корректировка данных, то да, зарядил бы, через базу данных по тому же принципу:
— Открываю QGIS, создаю слой полигонов с системой координат WGS 84 (EPSG:4326) и наношу объекты на этот слой. Затем открываю таблицу слоя и щелчком по левому верхнему углу выделяю всю таблицу. Копирую через CTRL-C. Вставляю на лист Microsoft Excel. Получаю созданную ранее таблицу с аттрибутами, но с еще одним столбцом геометрии в весьма читаемом виде. Пример значения столбца:
Адресация дело тонкое, еще более тонкое — фактические границы населенных пунктов. В федеральной адресной системе (ФГИС) проблем с ними множество, но для решения прикладных задач обычно достаточно точности, которую предоставляет OSM.
Навскидку погуглил.
Для Марий Эл нашел только предложение платного скачивания послойной вырезки из карт OSM — 200 рублей тут. Уверен, что можно найти вырезку бесплатно или поработать с послойной картой всей России (см.ниже как). Тоже была на гислаб.
Чтобы далеко не ходить — на странице платного предложения выше есть список стандартных слоев OSM, а при переходе по ним — полей соответствующих таблиц. Нас интересуют два слоя:
building-point — 149 объектов
building-polygon — 123524 объекта
В таблицах содержатся схожие поля, описывающие адреса — можем делать с ними что хотим. Конечно, для этих объектов есть геометрия. И если нам из полигона контура здания надо получить x, y точки, то QGIS это легко делает.
BUILDING A_STRT <addr:street>
A_SBRB <addr:suburb>
A_HSNMBR <addr:housenumber>
B_LEVELS <building:levels>
NAME Но надо еще отделить адреса в городе Йошкар-Ола из общей массы, а если скачаете карту всей России, то тем более. Судя по описанию в таблицах домов в адресе нет поля город. Не проблема — берем еще слои из карты. Нам помогут:
boundary-polygon -143 объекта
или
settlement-point — 1630 объеков
В них содержатся полигоны границ субъектов федерации, муниципальных и иных территориальных образований, в том числе населенных пунктов. Находим и выделяем в таблице одного из этих слоев нужное территориальное образование. Применяем выделение в другой таблице (с домами) для выделения и копируем выделенные объекты на новый слой. На карте будут точки адресов, подпишите их если надо полями в свойствах слоя. А в таблице слоя — все дома в городе.
Карты можно экспортировать в jpeg, или вообще создавать атласы в своих проектах. Если речь о том, чтобы вставить интерактивную карту в веб-приложение, то NextGIS Web дает возможность встраивания кода карты на сторонний сайт. И, в статье не упоминал, но сам QGIS может работать как картографический веб-сервис, так что вводите в локальной сети адрес сервера и получаете карту в браузере.
Да, в том числе есть плагин «Quick Map Services», который описал в статье. Много на gis-lab.info. Модели рельефа тоже можно формировать, но этот функционал мне был не нужен.
2. Географические системы координат — да, но опять же, ставил задачей направить пользователя по кратчайшему маршруту. Хочешь получать географические координаты — настрой слой на систему координат WGS 84.
Насчет эмпирической пользовательской системы — не согласен. Многое зависит от задач.
Из публичной кадастровой карты поворотные точки, по моей информации, не получить никак — надо для каждого участка заказывать кадастровые паспорта. А для принятия управленческих решений на основе визуализированных данных устранение сдвига с любой погрешностью благо.
Кроме того, эта система применяется ведь не к моему слою, а к тому, который выдает ПКК. Так что мы эти данные не храним и не копим.
Кстати, может кто знает, как из ПКК получить контур участка на свой слой?
Речь идет о том, чтобы самому наносить объекты. Так что вероятность таких проблем минимальна.
Но если правильно понял вопрос, то надо сформировать, например, код JS для размещения 100 объектов на карте. Пусть это будут 100 полигонов.
Заглядываю в пример со страницы библиотеки:
Если изменения не очень частые, то вручную бы взял координаты из QGIS, обработал и слепил бы строки в Excel. Или, если требуется постоянная корректировка данных, то да, зарядил бы, через базу данных по тому же принципу:
— Открываю QGIS, создаю слой полигонов с системой координат WGS 84 (EPSG:4326) и наношу объекты на этот слой. Затем открываю таблицу слоя и щелчком по левому верхнему углу выделяю всю таблицу. Копирую через CTRL-C. Вставляю на лист Microsoft Excel. Получаю созданную ранее таблицу с аттрибутами, но с еще одним столбцом геометрии в весьма читаемом виде. Пример значения столбца:
Polygon ((35.93971509137796261 56.84680113750829378, 35.94017645918111015 56.84715874618873244, 35.94050731111398278 56.84702646086687139, 35.94121239322927153 56.84676224849280857, 35.94044389596734135 56.84617271621075218, 35.93949998958188985 56.84652204346423332, 35.93981141884147945 56.84676244409779144, 35.93971509137796261 56.84680113750829378))
Далее через CTRL-H меняю.
", " ---> "],@["
«Polygon ((» ---> «var@polygon@=@L.polygon([»
"))" ---> "]).addTo(mymap);"
" " ---> ",@"
"@" ---> " "
Все, строки выглядят так:
Строго по образцу, на весь перенос не более пяти минут и копипасте из Excel в код.
http://be.gis-lab.info/data/osmshp/latest/RU-ME.7z
Скачал, открыл в QGIS — все выше указал верно.
Есть видео как выделить дома в пределах полигона границ территориального образования
Удачи!
Навскидку погуглил.
Для Марий Эл нашел только предложение платного скачивания послойной вырезки из карт OSM — 200 рублей тут. Уверен, что можно найти вырезку бесплатно или поработать с послойной картой всей России (см.ниже как). Тоже была на гислаб.
Чтобы далеко не ходить — на странице платного предложения выше есть список стандартных слоев OSM, а при переходе по ним — полей соответствующих таблиц. Нас интересуют два слоя:
В таблицах содержатся схожие поля, описывающие адреса — можем делать с ними что хотим. Конечно, для этих объектов есть геометрия. И если нам из полигона контура здания надо получить x, y точки, то QGIS это легко делает.
BUILDING A_STRT <addr:street>
A_SBRB <addr:suburb>
A_HSNMBR <addr:housenumber>
B_LEVELS <building:levels>
NAME Но надо еще отделить адреса в городе Йошкар-Ола из общей массы, а если скачаете карту всей России, то тем более. Судя по описанию в таблицах домов в адресе нет поля город. Не проблема — берем еще слои из карты. Нам помогут:
или
В них содержатся полигоны границ субъектов федерации, муниципальных и иных территориальных образований, в том числе населенных пунктов. Находим и выделяем в таблице одного из этих слоев нужное территориальное образование. Применяем выделение в другой таблице (с домами) для выделения и копируем выделенные объекты на новый слой. На карте будут точки адресов, подпишите их если надо полями в свойствах слоя. А в таблице слоя — все дома в городе.
Вуаля