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

Не компилируется на 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:

А нашел

У меня этот плагин не открывает ни один файл, даже те, что были сохранены в самом JOSM.

Ну примеры файлов не помешали бы.

То, что сохраняет сам JOSM в geojson этот же плагин и не открывает вообще. Вроде бы было заявлено только возможность чтения. А вот файлы с NextGIS Mobile у меня этот плагин в JOSM открывает (при наличии плагина opendata).

Нашел в чем проблема. В общем josm в geojson форматирует объект с информацией про СК (crs) не по стандарту geojson.
По стандарту:


crs: { 
    type:"name", 
    properties: {
        name:"тут название СК"
    }
}

Josm выдает там:


crs: {
    type:"name",
    name:"название СК",
}

Так что можно заводить тикет JOSM-у. (отписался с патчем в существующий https://josm.openstreetmap.de/ticket/10770, там добавляли этот crs)

У объекта crs по спецификации должны быть поля type и properties. С другой стороны, над кодом библиотеки, которая читает geojson тоже поработать надо - в той же спецификации нет ограничений на дополнительные поля, а в библиотеке на любом неподходящем поле сразу ошибка.

trolleway, если есть файлы, не из josm-а, которые не открываются, покажи, пожалуйста. Полугигабайтных только не надо :slight_smile:

Linked CRS не поддерживается ?


"crs": {
    "type": "link", 
    "properties": {
      "href": "http://example.com/crs/42",
      "type": "proj4"
      }
    }

Впрочем даже для Named CRS не все так просто:


OGC CRS URNs such as "urn:ogc:def:crs:OGC:1.3:CRS84" shall be preferred 
over legacy identifiers such as "EPSG:4326":

Нет, linked не поддерживается.

А с name и URN и старый формат обрабатываются нормально, спасибо geotools плагину.

Хмм, geotools умеет работать с WKT http://johnewart.net/posts/2013/geotools_custom_crs ,
но josm внутри использует синтаксис proj4. PITA для user-defined МСК.

https://dl.dropbox.com/u/11265861/josm-geojson-0.0.1-SNAPSHOT.jar - тут версия, которая скипает все непонятные поля, экспортнутые из josm-а должна теперь читать.

usm78-gis, в общем-то можно и linked прикрутить, но будут ли этим пользоваться? Изначально не было в планах поддерживать все возможные вариации формата, даже описанные в спецификации :slight_smile:

На linked свет клином не сошелся, вопрос заключается в том, как поддержать
пользовательские проекции (МСК).
Для PicLayer и например растровых схем территориального планирования
эта проблема решена.
В былые времена был доступен (geo)JSON с сайта ПКК
с кадастровыми границами, и при всех их недостатках,
эти данные привязаны гораздо лучше чем bing.
Сейчас приходится создавать из кадастровых данных geoCSV,
конвертировать его с помощью ogr2ogr в GPX для того чтобы
подгрузить в josm, в то время как geojson позволил бы сохранить
исходные данные “как есть”. СТП я тоже уже давно не перегоняю
в EPSG:3857 с помощью gdalwarp, зачем портить исходные данные, когда
есть более разумные решения ?

В piclayer имеются ввиду растягивание через 3 контрольные точки, или есть что-то другое?

В piclayer есть geotiff, но там никакой работы с проекциями не ведется, насколько я помню.

usm78-gis, а как еще могут задаваться пользовательские проекции? В geojson может быть или именованная проекция, или по ссылке - локальный файл или урл (я пока не понимаю разницы между proj4, ogcwkt, ersiwkt, типы данных в ссылке, но это вроде не проблема). Можешь показать пример того, что должно поддерживаться (можно и на почту)? Примеров из спеки geojson мне, мягко говоря, мало, а своих нет вообще.

Разница между proj4, ogcwkt, esriwkt иллюстрируется вот этим:
http://spatialreference.org/ref/sr-org/7483/proj4/
http://spatialreference.org/ref/sr-org/7483/esriwkt/
http://spatialreference.org/ref/sr-org/7483/prettywkt/ (тут кое-что избыточно, но тем не менее)

Если правильно установить параметры проекции в josm, а СТП составляются в четко определенных для
данной территории МСК, то достаточно определить линейный размер пиксела по 2 контрольным точкам
и сдвинуть картинку на нужное место, так как в аффинном преобразовании
таким образом исключается поворот осей СК.

Конкретный пример:
Координаты поворотных точек границы территории объекта культурного наследия федерального значения “Дом, в котором в 1880-х гг. жил врач-терапевт Боткин Сергей Петрович”
http://lawru.info/dok/2013/08/23/n1010654.htm
Соседний участок с кадастровым номером 47:01:1629001:3332 имеющий с ним две общих точки принадлежит/принадлежал
ГОМЗ им. ОГПУ ОАО ЛОМО
http://www.lomo.ru/site/about/index.php?stid=208
и для него можно было скачать (esri-)geojson файл прямо с сайта ПКК (его понимает GDAL/OGR и
соответственно QGIS) в таком виде (в ring оставлены только 1,2 и последняя точки):


{
 "displayFieldName": "PKK_ID",
 "fieldAliases": {
  "PKK_ID": "Идентификатор ПКК"
 },
 "geometryType": "esriGeometryPolygon",
 "spatialReference": {
  "wkid": 3352,
  "latestWkid": 3352
 },
 "fields": [
  {
   "name": "PKK_ID",
   "type": "esriFieldTypeString",
   "alias": "Идентификатор ПКК",
   "length": 24
  }
 ],
 "features": [
  {
   "attributes": {
    "PKK_ID": "4701162900103332"
   },
   "geometry": {
    "rings": [
     [
      [
       2325163.7656293921,
       6672819.5555726346
      ],
      [
       2325289.7957857726,
       6672890.4156353418
      ],

      [ 
       2325163.7656293921,
       6672819.5555726346
      ]
     ]  
    ]   
   }
  }
 ]
} 

Координаты поворотных точек заданы в МСК-47 зона 1
http://www.mapbasic.ru/msk47
а geojson в “wkid”: 3352, т.е. EPSG:3352, т.е. в СК-63 блок C зона 2 (QGIS знает ее: http://spatialreference.org/ref/epsg/pulkovo-1942-cs63-zone-c2/ )
http://epsg.io/3352.prettywkt
Эти СК, как видно, различаются только вертикальным сдвигом на 6200000 метра
(и сменой номера зоны 2 на 1 по горизонтали),
и ими можно пользоваться в josm (user-defined projection),
в том числе и для привязки СТП.
По этим данным можно кстати увидеть на сколько “сдвинута” ПКК относительно кадастровых выписок,
но это в данной теме неинтересно.

Судя по тому, что я нашел, это какой-то совершенно отдельный формат данных. В общем-то можно прицепить и такое, но тут заново писать надо и не со всеми его фичами понятно, что же делать и как показывать :slight_smile:
это оно, как я понимаю: http://resources.arcgis.com/en/help/rest/apiref/geometry.html