Страница 1 из 1

OGR & ArcGIS (rosreestr.ru)

Добавлено: 16 ноя 2012, 04:42
Nikolka00
согласно примеру, ogr берет онлайн данные и конвертирует в нужный. в данном случае JSON формате

ogr2ogr -f GeoJSON test.json "http://sampleserver3.arcgisonline.com/A ... s=*&f=json" OGRGeoJSON

если запрос сделать на росреестр
допустим такая строка вываливает ошибку. не поддерживаемый формат
ogr2ogr -f GeoJSON test.json "http://maps.rosreestr.ru/ArcGIS/rest/se ... 35&f=pjson" OGRGeoJSON

я так понимаю ogr умеет работать только по своему стандарту? или у rosreestr свой?

посмотрел данные из тестовых(примеров) с репозитория GDAL.
Спойлер

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

{
  "objectIdFieldName" : "objectid",
  "globalIdFieldName" : "",
  "geometryType" : "esriGeometryPoint",
  "spatialReference" : {
    "wkid" : 4326
  },
  "fields" : [
    {
      "name" : "objectid",
      "alias" : "Object ID",
      "type" : "esriFieldTypeOID"
    },
    {
      "name" : "fooInt",
      "alias" : "fooInt",
      "type" : "esriFieldTypeInteger",
      "length" : 36
    },
    {
      "name" : "fooDouble",
      "alias" : "fooDouble",
      "type" : "esriFieldTypeDouble"
    },
    {
      "name" : "fooString",
      "alias" : "fooString",
      "type" : "esriFieldTypeString",
      "length" : 50
    },
  ],
  "features" : [
    {
      "geometry" : {
        "x" : 2,
        "y" : 49
      },
      "attributes" : {
        "objectid" : 1,
        "fooInt" : 2,
        "fooDouble" : 3.4,
        "fooString" : "56",
      }
    }
  ]
}
Спойлер

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

{
  "objectIdFieldName" : "objectid",
  "globalIdFieldName" : "",
  "geometryType" : "esriGeometryMultiPoint",
  "spatialReference" : {
    "wkid" : 4326
  },
  "fields" : [
    {
      "name" : "objectid",
      "alias" : "Object ID",
      "type" : "esriFieldTypeOID"
    },
    {
      "name" : "fooInt",
      "alias" : "fooInt",
      "type" : "esriFieldTypeInteger",
      "length" : 36
    },
    {
      "name" : "fooDouble",
      "alias" : "fooDouble",
      "type" : "esriFieldTypeDouble"
    },
    {
      "name" : "fooString",
      "alias" : "fooString",
      "type" : "esriFieldTypeString",
      "length" : 50
    },
  ],
  "features" : [
    {
      "geometry" : {
        "points" : [ [2,49], [3,50] ],
      },
      "attributes" : {
        "objectid" : 1,
        "fooInt" : 2,
        "fooDouble" : 3.4,
        "fooString" : "56",
      }
    }
  ]
}

и других. везде формат ответа начинаются с "geometry"
"features" : [
{
"geometry" : {
у росреестра "attributes"
{
"features" : [
{
"attributes" : {

как исправить положение? где код подправить в скрипте?

Re: OGR & ArcGIS (rosreestr.ru)

Добавлено: 16 ноя 2012, 07:07
Максим Дубинин
а то что выдает РР - GeoJSON?

http://geojsonlint.com/ говорит что нет.

Re: OGR & ArcGIS (rosreestr.ru)

Добавлено: 16 ноя 2012, 08:43
Nikolka00
http://gdal.org/ogr/drv_geojson.html
Спойлер
This driver implements read/write support for access to features encoded in GeoJSON format. The GeoJSON is a dialect based on the JavaScript Object Notation (JSON). The JSON is a lightweight plain text format for data interchange and GeoJSON is nothing other than its specialization for geographic content.

At the moment of writing this, GeoJSON is supported as output format of services implemented by FeatureServer, GeoServer and CartoWeb.

The OGR GeoJSON driver translates a GeoJSON encoded data to objects of OGR Simple Features model: Datasource, Layer, Feature, Geometry. The implementation is based on GeoJSON Specification draft, v5.0.
Starting with OGR 1.8.0, the GeoJSON driver can read the JSON output of Feature Service request following the GeoServices REST Specification, like implemented by ArcGIS Server REST API
Начиная с OGR 1.8.0, GeoJSON может прочитать JSON по запросу службы по спецификации REST геосервис, как осуществляется ArcGIS Server REST API
вот и я про то же. росреестр изобрел велосипед? или это некая защита от "дурака" так сказать

Re: OGR & ArcGIS (rosreestr.ru)

Добавлено: 16 ноя 2012, 10:13
Дмитрий Барышников
На самом деле ogr ограниченно поддерживает geojson
http://gdal.org/ogr/drv_geojson.html
Если выдача росреестра не подходит под описанные сервисы, то надо в драйвер функционал добавлять или делать разбор в своей программе.

[ Сообщение с мобильного устройства ]

Re: OGR & ArcGIS (rosreestr.ru)

Добавлено: 16 ноя 2012, 11:05
Nikolka00
плохо (

согласно валидатора, данные по ссылкам валидны в формате JSON

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

http://maps.rosreestr.ru/ArcGIS/rest/services/CadastreNew/Cadastre/MapServer/exts/GKNServiceExtension/online/parcel/find?cadNum=23:43:122036:35&f=pjson

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

http://psearch-maps.yandex.ru/1.x/?callback=&text=%D0%BC%D0%B5%D1%85%D0%BC%D0%B0%D1%82%20%D0%9C%D0%93%D0%A3&key=AKgqHEkBAAAA-WzMYwIAeAeamm8ETZZZpdfp2R07eIuGyX4AAAAAAAAAAACjUCDoHIHZJ2pcl5mSL1zWVp2Myw==&format=json
http://zaach.github.com/jsonlint/

п.с. не плохой JSON Editor Online -редактор JSON
http://jsoneditoronline.org/

Re: OGR & ArcGIS (rosreestr.ru)

Добавлено: 16 ноя 2012, 11:22
Дмитрий Барышников
JSON != GeoJSON
Они обмениваются JSON и обрабатывают его (и другим предлагают) как хотят.
Подождите. А откуда у вас такая ссылка?
http://maps.rosreestr.ru/ArcGIS/rest/se ... 35&f=pjson
Если идти по структуре каталога - то на этой странице (понятно до какого уровня я дошел) вроде нет перехода на exts
http://maps.rosreestr.ru/ArcGIS/rest/se ... /MapServer
Нашел - это же экстеншен (Supported Extensions GknServiceExtension). Он и не обязан вам GeoJSON гнать. Они честно схему привели: http://maps.rosreestr.ru/ArcGIS/rest/se ... n?f=schema
"supportedOutputFormats" : [
"json",
"html"
]
Вы можете получить через ogr с этой страницы все, что находится в секции Layers
http://maps.rosreestr.ru/ArcGIS/rest/se ... /MapServer

Re: OGR & ArcGIS (rosreestr.ru)

Добавлено: 16 ноя 2012, 11:36
Nikolka00
ссылки привел просто для примера. GeoJSON расширенный JSON же? ) и полностью поддерживает спецификацию, вроде 5 xx . ну эт не столь важно.

вывод ток из всего, как заставить работать по сторонним "схемам" OGR ? ))
Вы можете получить через ogr с этой страницы все, что находится в секции Layers
http://maps.rosreestr.ru/ArcGIS/rest/se ... /MapServer
можете привести пример?
ogr2ogr.py -f GeoJSON test.json "http://...." OGRGeoJSON
мне не ясно какая должна быть ссылка и обратные данные в виде адресных данных

ну то что в лейерс мне не интересно )) мне нужны именно координаты и адреса))

может подскажете как сформировать ссылку по кадастр. номеру иль другому идентификатору, чтобы получит в JSON формате полигон кадастр.квартала, района ???

Re: OGR & ArcGIS (rosreestr.ru)

Добавлено: 16 ноя 2012, 15:40
Дмитрий Барышников
Nikolka00 писал(а): может подскажете как сформировать ссылку по кадастр. номеру иль другому идентификатору, чтобы получит в JSON формате полигон кадастр.квартала, района ???
Здесь надо либо в OGR добавлять функционал по разбору этого ответа в OGRLayer либо свою программу делать которая будет разбирать ответ и пихать его в OGRLayer.

В драйвере GeoJSON OGR есть ветвление по разбору ответа от сервера для FeatureServer, GeoServer, CartoWeb и ArcGIS Server.

Причем, то что написано в http://gdal.org/ogr/drv_geojson.html
The implementation is based on GeoJSON Specification draft, v5.0.
означает, что основывается, а не 100% поддерживает.

В общем, я считаю, что халява вида: ogr2ogr -f GeoJSON ... здесь не пройдет.