geomixer json

Все про Geomixer и проекты на его основе
Ответить
Slinger
Гуру
Сообщения: 821
Зарегистрирован: 17 июн 2010, 23:14
Статьи: 2
Репутация: 183
Откуда: Москва

geomixer json

Сообщение Slinger » 06 сен 2016, 11:05

Добрый день. В наличии есть файл json следующего содержания:

Код: Выделить всё

_vectorTileReceiver({"LayerName":"test","x":9,"y":7,"z":5,"v":20,"bbox":[11271098.442818951,8766409.899970293,12523442.714243278,10018754.17139462],"values":[[1,0,{"type":"POLYGON","coordinates":[[[11271098.44,10018754.17],[11271098.44,8766409.9],[11792520.95,8766409.9],........
По своей структуре они не похожи ни на geojson, ни на форматированный json, ни на EsriJson. Все объекты полигональные (с островами и мультиполигональные). Если кто-то имел опыт с подобными файлами, подскажите, как можно конвертировать оные в любой другой читаемый векторный формат ?
Последний раз редактировалось Slinger 13 сен 2016, 14:05, всего редактировалось 1 раз.

freeExec
Гуру
Сообщения: 808
Зарегистрирован: 23 апр 2011, 10:32
Проекты: 1
Репутация: 118
Откуда: Ульяновск

Re: geomixer json

Сообщение freeExec » 06 сен 2016, 12:40

Любой известный вам язык программирования. Десериализуете текущие данные в класс отражающей его структуру. Потом пересоздаёте в новый класс отражающий geojson и сериализуете его.

Slinger
Гуру
Сообщения: 821
Зарегистрирован: 17 июн 2010, 23:14
Статьи: 2
Репутация: 183
Откуда: Москва

Re: geomixer json

Сообщение Slinger » 06 сен 2016, 13:54

Ну это понятно впринципе, что можно распарсить код и сильно заморочиться, определив где острова, а где мультиполигональные полигоны. А где просто полигоны. Но наверняка ведь кто-то уже этот велосипед изобрёл.

trir
Гуру
Сообщения: 3621
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 605
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: geomixer json

Сообщение trir » 06 сен 2016, 14:21

а что это и откуда?

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3369
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 516
Ваше звание: Author
Контактная информация:

Re: geomixer json

Сообщение Denis Rykov » 07 сен 2016, 07:13

Полностью пример данных приложите если можно.
Spatial is now, more than ever, just another column- The Geometry Column.

trir
Гуру
Сообщения: 3621
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 605
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: geomixer json

Сообщение trir » 07 сен 2016, 07:37

Похоже на Mapbox Vector Tile

Slinger
Гуру
Сообщения: 821
Зарегистрирован: 17 июн 2010, 23:14
Статьи: 2
Репутация: 183
Откуда: Москва

Re: geomixer json

Сообщение Slinger » 07 сен 2016, 11:59

Denis Rykov

Код: Выделить всё

gmxAPI._vectorTileReceiver({"LayerName":"test","x":9,"y":6,"z":5,"v":5,"bbox":[11271098.442818951,7514065.628545966,12523442.714243278,8766409.899970293],"values":[[1,0,{"type":"MULTIPOLYGON","coordinates":[[[[11271098.44,8766409.9],[11271098.44,7965016.25],[11271176.0,7965026.55],[11271392.77,7965144.49],[11271584.46,7965263.25],[11271853.33,7965442.11],[11272154.83,7965845.12],[11272275.75,7966091.45],[11272201.63,7966494.53],[11271981.5,7966652.18],[11271748.53,7966797.74],[11271710.16,7967149.55],[11271796.15,7967472.31],[11272032.63,7967802.47],[11272212.75,7967946.69],[11272397.13,7968216.01],[11272529.32,7968424.49],[11272513.13,7968687.99],[11272410.19,7968979.56],[11272355.62,7969219.32],[11272464.16,7969466.17],[11272625.17,7969786.48],[11272658.16,7970023.33],[11272844.33,7970342.81],[11272945.4,7970740.22],[11273068.49,7971049.33],[11273173.29,7971183.62],[11273453.36,7971687.85],[11273660.73,7971893.87],[11273975.73,7971945.82]]]]}]]})
Примерно так. Координат только побольше будет.

trir

Вполне вероятно, структура сильно похожа. Мне видимо нужен vector-tile-py, но там примера, кажется, нету. Не могу понять, в каком виде нужно данные на вход подавать.

trir
Гуру
Сообщения: 3621
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 605
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: geomixer json

Сообщение trir » 07 сен 2016, 12:08


Slinger
Гуру
Сообщения: 821
Зарегистрирован: 17 июн 2010, 23:14
Статьи: 2
Репутация: 183
Откуда: Москва

Re: geomixer json

Сообщение Slinger » 08 сен 2016, 19:22

trir

Точно, это то. А не подскажите как скриптом пользоваться ? Java установлена. А то опять же примеров нет, в каком формате нужны данные на вход.

trir
Гуру
Сообщения: 3621
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 605
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: geomixer json

Сообщение trir » 08 сен 2016, 20:08

это javaScript, это код из их плагина для Leaflet

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3369
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 516
Ваше звание: Author
Контактная информация:

Re: geomixer json

Сообщение Denis Rykov » 08 сен 2016, 22:24

В этом JSON, что вы привели, геометрия - это обычный GeoJSON, правда с нестандартными названиями типов геометрий, поэтому берёте любой парсер GeoJSON и вперёд. Вот небольшой пример того, как это работает в OpenLayers 3: https://jsfiddle.net/_DR_/6jmyLdrc/ (нажмите кнопку Run и откройте консоль браузера, скрипт можно редактировать).
Spatial is now, more than ever, just another column- The Geometry Column.

Slinger
Гуру
Сообщения: 821
Зарегистрирован: 17 июн 2010, 23:14
Статьи: 2
Репутация: 183
Откуда: Москва

Re: geomixer json

Сообщение Slinger » 13 сен 2016, 14:14

Всем спасибо, задача решена.

Slinger
Гуру
Сообщения: 821
Зарегистрирован: 17 июн 2010, 23:14
Статьи: 2
Репутация: 183
Откуда: Москва

Re: geomixer json

Сообщение Slinger » 22 сен 2016, 15:23

На данный момент задача по обработке GeoMixer Json решается следующим образом (для Windows):

1) Установить Python 2.7.9. Вместе с ним автоматически установится pip. Кроме того, при установке надо поставить галочку там, где питон предлагает "прописаться" в системную переменную Path. Если этого не сделать, то потом нужно будет руками в эту переменную добавить пути к папкам питона и к папке scripts. Например, "C:\Program Files (x86)\python279" и "C:\Program Files (x86)\python279\Scripts".

2) Установить GIT. Его настройки при установке роли не играют.

3) Обновить pip. Для этого запускаем консоль cmd и там прописываем команду "python -m pip install -U pip" (эта команда сработает при условии, что путь к питону прописан в переменной Path). Иначе необходимо будет сначала "зайти" в папку, где установлен питон.

4) Устанавливаем виртуальное окружение через следующую команду "pip install virtualenv" и затем "virtualenv --no-site-packages env". После чего заходим в это окружение через команду "env\Scripts\activate"

5) Клонируем проект со скриптом gmx2geojson через команду "git clone https://github.com/drnextgis/gmx2geojson.git"

6) Инсталлируем скрипт gmx2geojson. Для этого в консоли заходим в его папку, где лежит файл setup.py, и выполняем команду "pip install --editable ." (без кавычек, точка обязательна!)

7) Теперь скрипт начинает работать. Выполняется он через команду gmx2geojson. Чтобы его запустить, нужно зайти в виртуальное окружение (команда "env\Scripts\activate"). Иногда, по какой-то причине, он работает и без захода туда.

8 ) На вход в скрипт подаётся файл так называемого geomixer json, текст в чистом виде. Единственное, что необходимо сделать - убрать в начале текста "gmxAPI._vectorTileReceiver(" (без кавычек), а в конце файла убрать закрывающую скобку. Кроме того, нужно проверить, что весь семантический текст этого json'a находится в кодировке UTF-8. В противном случае скрипт не сработает.


Вот и всё. На выходе мы получим GeoJson, с которым можно будет в дальнейшем работать через QGIS. При этом полученный файл в Global Mapper загрузить не получится, так как, видимо, возвращаются не все поля и теги, так что я дополнительно прогоняю файл через ogr2ogr, получая на выходе "полноценный" geojson, который можно подгружать и в другие приложения.

P.S: Спасибо Денису Рыкову за скрипт!
Последний раз редактировалось Slinger 22 сен 2016, 18:12, всего редактировалось 1 раз.

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3369
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 516
Ваше звание: Author
Контактная информация:

Re: geomixer json

Сообщение Denis Rykov » 22 сен 2016, 18:00

Спасибо за подробную инструкцию. Хотел бы заметить, что именно так я себе представляю правильный способ распространения (пакет) и установку консольных скриптов - pip-ом (решается проблема зависимостей) и в виртуальное окружение (не загрязняется системный Python). А использование console_scripts entry point позволяет легко регистрировать функции Python в качестве консольных утилит. Однако, многие до сих пор продолжают игнорировать пакетирование своих модулей.
Spatial is now, more than ever, just another column- The Geometry Column.

Ответить

Вернуться в «GeoMixer»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость