Поддержка GeoJSON в JOSM

Почему-то не могу найти себе места из-за того что JOSM не читает GeoJSON. Давайте NextGIS проспонсирует, а кто-нибудь напишет плагин для этого? Отличная задача для студента. Мы поддержим не только финансово, но и морально-методически.

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

Функциональность:

  • чтение данных
  • поддержка на входе EPSG:4326, 3857

Полезные ссылки:

UPD: Плагин исправлен, улучшен и успешно работает. Качаем тут: http://nextgis.ru/programs/josm-geojson.jar

Парсер JSON уже есть в ядре JOSM, потенциальный автор плагина пусть его использует.

Этот гитхаб вообще-то пару раз форкнут.
например> Latest commit c07eb09 29 days ago

Там небось «DOM»-парсер, который умрет от 100-мегабайтного JSON’а. :3

Конечно, ничего не обещаю, но попробую глянуть на выходных, что уже написано и что можно сделать.

О, вот это ценный комментарий который может поменять дело.

Да, похоже, что этот плагин, если собрать, работает (хотя и странно немного, как по мне - создает по два слоя на файл, например). Не было возможности проверить с другими проекциями, но по опыту PicLayer надо попробовать выставлять проекцию в настройках JOSM перед открытием файла.

В общем если будет список идей, как эту штуку улучшить, это можно организовать.

круто

попробовал собрать через gradle из этого форка, но у меня

sim@sim-think:~/josm-geojson$ gradle clean build

FAILURE: Build failed with an exception.

* Where:
Build file '/home/sim/josm-geojson/build.gradle' line: 64

* What went wrong:
Could not compile build file '/home/sim/josm-geojson/build.gradle'.
> startup failed:
  build file '/home/sim/josm-geojson/build.gradle': 64: unable to resolve class de.undercouch.gradle.tasks.download.Download
   @ line 64, column 1.
     import de.undercouch.gradle.tasks.download.Download
     ^
  
  1 error

никогда не собирал ничего gradle’ом, ЧЯДНТ?

А у вас сам https://plugins.gradle.org/plugin/de.undercouch.download прикручен?

Это ад какой-то, проще через ogr2ogr тогда…

josm же знает сам почти все проекции
(кроме oblique mercator, которая была бы
в принципе полезна для WMS во всяких МСК дер. Гадюкино)

Да, только там вечно нужно что-то переключать и настраивать вручную, чтобы это все подцепилось правильно.

в годном geojson-е должны быть конструкции вида:

"crs": {
    "type": "name",
    "properties": {
      "name":"urn:ogc:def:crs:EPSG::3857"
      }
    }

Если они есть, то нужно просто взять оттуда EPSG код и сделать EPSG XXX → EPSG:4326.

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

ю-ху

Благодаря Larry0ua при моей скромной поддержке мы таки довели плагин до работоспособного состояния и сделали ряд важных улучшений (например поддержку проекций).

Качать здесь: http://nextgis.ru/programs/josm-geojson.jar (build 31244)

Установка простая, положить в ~/.josm-latest/plugins/, после запуска джосм предложет подтянуть ке-какие зависимости.

Оччень интересно :slight_smile:
Исходники покажите, а то .jar это как-то не кошерно.

https://github.com/Larry0ua/josm-geojson

Не компилируется на Ubuntu.


trolleway@nextgis2:~/josm-geojson$ gradle clean build

FAILURE: Build failed with an exception.

* Where:
Build file '/home/trolleway/josm-geojson/build.gradle' line: 74

* What went wrong:
Could not compile build file '/home/trolleway/josm-geojson/build.gradle'.
> startup failed:
  build file '/home/trolleway/josm-geojson/build.gradle': 74: unable to resolve class de.undercouch.gradle.tasks.download.Download
   @ line 74, column 1.
     import de.undercouch.gradle.tasks.download.Download
     ^
  
  1 error


Гугл подсказывает, что этот плагин не работает со старыми версиями gradle, предлагаю обновить его до 2.1+ или поменять билд-файл как тут https://plugins.gradle.org/plugin/de.undercouch.download

trolleway, чего jar-то просто не заберешь и папку не положишь?

А вдруг там вирусы и завтра его кошелёк опустеет :slight_smile: