Вопрос по поводу кадастровой карты Москвы, правилах правильного построения запроса в адресной строке Web-браузера и о протоколе авторизации OAuth2

106
12 декабря 2021, 12:40

Я пытаюсь получить доступ к открытым web-service Публичной кадастровой карты г. Москвы. https://pkk5.rosreestr.ru/

Моя задача заключается в том, что имея на руках x,y-координаты, определить в каком кадастровом квартале эта точка находится. Всё было бы просто замечательно, если вот эта документация была рабочей (пункт 2.1: СЕРВИСЫ ПОИСКА И ИДЕНТИФИКАЦИИ ОБЪЕКТОВ /features/type_id). Дело в том, что тот пример, который они приводят в документации в пункте "пространственный запрос, с точечным объектом в качестве параметра" не работает.

Вот этот самый пример:

sq={"type":"Point","coordinates":[39.70630608803698,48.3987722344 97535]}

т.е. должна была бы получиться ссылка примерно вроде этой, которая не является рабочей:

http://pkk5.rosreestr.ru/api/features/1?sq={"type":"Point","coordinates":[39.70630608803698,48.3987722344 97535]}

пробовал декодировать эту строчку: {"type":"Point","coordinates":[39.70630608803698,48.3987722344 97535]} через вот этот сервис

http://pkk5.rosreestr.ru/api/features/1?sq=%7B%22type%22%3A%22Point%22%2C%22coordinates%22%3A%5B39.70630608803698%2C48.3987722344%2097535%5D%7D

но ничего не вышло.

Или как решить обратную задачу? Есть координаты полигона (зоны) и необходимо получить кадастровые номера участков, попавших в заданную зону, где полигон должен быть замкнут. Так вот это также не работает:

http://pkk5.rosreestr.ru/api/features/1?sq={"type":"Polygon","coordinates":[[[x1,y1],[x2,y2],.....[x1,y1]]]}

http://pkk5.rosreestr.ru/api/features/1?sq={"type":"Polygon","coordinates":[[[37.1833546796268880 56.0068629405336580], [37.1828049072541380 56.0065611890887990], [37.1828692351763910 56.0065555167987480], [37.1832810451048490 56.0064977481455200], [37.1836817996382360 56.0064195620103010], [37.1854662686065610 56.0059286282822340], [37.1858928124140460 56.0064238718384290], [37.1853341905645180 56.0065776444735090], [37.1849872347986830 56.0066637873418140], [37.1846294993894160 56.0067349027446540], [37.1842630722654380 56.0067905468704770], [37.1838902009726620 56.0068303661535510], [37.1835129720616140 56.0068540964539570], [37.1835513995615800 56.0068988325998230], [37.1839286296195010 56.0068750123706640], [37.1843015013033310 56.0068351929721900], [37.1846679287952710 56.0067795487330140], [37.1850256638157080 56.0067085230315060], [37.1853726206283780 56.0066222902442310], [37.1859314032697700 56.0064685178454410], [37.1861462674448330 56.0067180291256010], [37.1854420548783860 56.0069150807441570], [37.1850905131312640 56.0069537905339770], [37.1835443875708120 56.0069133644169170], [37.1833546796268880 56.0068629405336580]]]}

Поэтому пришлось пойти заковыристым путем

Что я сделал?

Можно понять при помощи средств любого web-браузера, какие выполняются операции при выполнении тех или иных действий на сайте. Ручным образом просто кликаем по домику, и в режиме дебага (F12, вкладка Networks, фильтр по XHR) видим какие производятся GET-запросы (обычно их 3, но мне нужен самый первый)

Например, такой: https://pkk5.rosreestr.ru/api/features/1?text=55,715910%2037,269387&tolerance=8&limit=11&callback=jQuery19102846468790997936_1575551099067&_=1575551099068

Данные получил такие в JSON-формате:

jQuery19102846468790997936_1575551099067( 
{
  "features": [
    {
      "attrs": {
        "address": "\u043e\u0431\u043b. \u041c\u043e\u0441\u043a\u043e\u0432\u0441\u043a\u0430\u044f, \u0440-\u043d \u041e\u0434\u0438\u043d\u0446\u043e\u0432\u0441\u043a\u0438\u0439, \u0432 \u0440\u0430\u0439\u043e\u043d\u0435 \u0434.\u041f\u043e\u0434\u0443\u0448\u043a\u0438\u043d\u043e",
        "cn": "50:20:0010310:536",
        "id": "50:20:10310:536"
      },
      "center": {
        "x": 4148871.9967642617,
        "y": 7502083.436242316
      },
      "extent": {
        "xmax": 4148989.6945853354,
        "xmin": 4148758.172545575,
        "ymax": 7502150.5783624435,
        "ymin": 7502012.341562664
      },
      "sort": 5020001031000536,
      "type": 1
    }
  ],
  "status": 200,
  "total": null
});

Но на любом другом компьютере эта ссылка не откроется, потому что если я правильно понял, сервер будет считать, что мы не прошли аутентификацию по протоколу OAuth2.

Вопросы:

  1. Что из себя представляет callback=jQuery19102846468790997936_1575551099067&_=1575551099068, где числовое значение на разных компьютерах все время разное? Правильно ли я понимаю, что "jQuery19102846468790997936_1575551099067&_=1575551099068" это какой-то рандомно выполняющийся метод?

Нашел вот такие ссылки:

https://pkk5.rosreestr.ru/arcgis_js_api/sdk/jsapi/oauthinfo-amd.html

https://github.com/Esri/jsapi-resources/tree/master/oauth

  1. Каким образом на программном уровне и ручным образом в Postman я могу пройти эту аутентификацию по протоколу OAuth2?
  2. Желательно бы получить универсальную ссылку, которая отрабатывала бы на всех компах для получения этого JSON-ответа.

Если нет возможности доступиться до этих данных, то тогда следующие несколько вопросов:

  1. Помогут ли в решении моей задачи вот такие метаданные, и если да, то как ими пользоваться?

  2. Кстати, а как пользоваться вот этими открытыми web-сервисами? Может они смогут мне помочь? https://pkk5.rosreestr.ru/arcgis/rest/services Можно увидеть хоть один наглядный пример?

Нашел некоторые ссылки, которые могут быть полезны, но я так и не нашел конкретную функцию, которая бы могла решить мою задачу...

Общая ссылка на ArcGis REST API: https://tasks.arcgisonline.com/arcgis/rest/services/

https://developers.arcgis.com/

https://developers.arcgis.com/rest/services-reference/get-started-with-the-services-directory.htm

Ссылки на ArcGis REST API с доменом pkk5 (видимо РосРеестр построен на этой платформе):

https://pkk5.rosreestr.ru/arcgis/sdk/rest/index.html#

Ссылки, которые приблизительно могут помочь в решении моего вопроса, но я не уверен:

https://pkk5.rosreestr.ru/arcgis/rest/services/Cadastre/Cadastre/MapServer

https://pkk5.rosreestr.ru/arcgis/sdk/rest/index.html#/Output_formats/02ss00000078000000/

https://pkk5.rosreestr.ru/arcgis/rest/services/Address/Locator_OSM_Composite/GeocodeServer

https://pkk5.rosreestr.ru/arcgis/rest/services/Geometry/GeometryServer/fromGeoCoordinateString

https://pkk5.rosreestr.ru/arcgis/rest/services/Address/gkn/GeocodeServer/findAddressCandidates

https://pkk5.rosreestr.ru/arcgis/sdk/rest/index.html#//02ss00000015000000

Ссылки, на ArcGis для JavaScript, также с доменом pkk5: https://pkk5.rosreestr.ru/arcgis_js_api/sdk/jshelp/ags_rest.html

https://pkk5.rosreestr.ru/arcgis_js_api/sdk/jsapi/geometryservice-amd.html

Возможно полезная ссылка для разработчиков, пытающихся достучаться на уровне программного кода к сайтам, основанным на платформе ArcGis: https://developers.arcgis.com/java/latest/guide/access-the-arcgis-platform.htm

https://github.com/kadnet/kadnet.apiv2.dotnet

Общие полезные ссылки:

https://blogs.esri-cis.ru/2018/08/06/cadastre-arcgis-desktop/

http://gis-lab.info/qa/data.html

https://data.nextgis.com/ru/?lvl=regions&country=RU

https://play.google.com/store/apps/details?id=com.dataeast.kadastr

https://apirosreestr.ru/

http://forum-rosreestr.ru/forum30/topic539/

Существует ли ФГИС ЕГРН API?

https://rosreestr.ru/upload/Doc/10-upr/%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D1%8B_01_Statement_v01_R02.pdf

https://rosreestr.ru/upload/Doc/10-upr/%D0%BF367.pdf

https://rosreestr.ru/upload/Doc/10-upr/%D0%BF0614_22-12-17.pdf

https://ktotam.pro/promo/api

https://egrp365.ru/api.php

https://github.com/egrp365/egrp365-api

Также обнаружил, что в меню "Рисование" можно установить множество точек на карте и определить по ним в каком кадастровом квартале она лежит.

Более того, сайт позволяет произвести загрузку данных из kml-файла. Его структура приведена ниже:

<kml xmlns="http://www.opengis.net/kml/2.2">
    <Document id="docid">
        <name>Объекты пользователя</name>
        <visibility>1</visibility>
        <Folder id="fid">
            <name>Объекты пользователя</name>
            <visibility>1</visibility>
            <Placemark id="id">
                <name>Объект пользователя</name>
                <visibility>1</visibility>
                <Point>
                    <coordinates>37.603894,55.748886</coordinates>
                </Point>
            </Placemark>
            <Placemark id="id">
                <name>Объект пользователя</name>
                <visibility>1</visibility>
                <Point>
                    <coordinates>37.605209,55.748655</coordinates>
                </Point>
            </Placemark>
            <Placemark id="id">
                <name>Объект пользователя</name>
                <visibility>1</visibility>
                <Point>
                    <coordinates>37.605891,55.748457</coordinates>
                </Point>
            </Placemark>
            <Placemark id="id">
                <name>Объект пользователя</name>
                <visibility>1</visibility>
                <Point>
                    <coordinates>37.605735,55.749782</coordinates>
                </Point>
            </Placemark>
        </Folder>
    </Document>
</kml>

По координатам можно увидеть, что ПКК5 использует систему координат WGS84, но тогда появляется другая проблема. В нашей базе данных имеются объекты, координаты которых выражены в системе координат МСК-77.

Появляется другой вопрос: как произвести конвертацию из МСК77 (Местная Система Координат для города Москвы) в WGS84?

В процессе поиска по Google-поисковику обнаружил ГОСТ на сайте Министерства Обороны Российской Федерации. В этом документе описаны какие-то преобразования из одной системы координат в другую, но походу это не то, что мне нужно, потому что я не нашел ничего похожего с МСК-77

UPDATE: Возможно проблема заключается в TLS 1.2: https://support.microsoft.com/ru-ru/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-wi Подскажите, пожалуйста, более подробно, как настроить TLS?

READ ALSO
Дженерики, метод of

Дженерики, метод of

Почему две данных реализации работают? В чем их принципиальное отличие?

288
Помощь с версткой блоков

Помощь с версткой блоков

Как сверстать эти блоки на чистом html и css?

136
Фон картинкой в CSS

Фон картинкой в CSS

Всем привет:) Не могу фон сделать под размер страницы, постоянно фон как бы не помещается на страницуВсе говорят про background-size: cover; Но он у меня...

189
Реализация нестандартной тени в css!

Реализация нестандартной тени в css!

Обнаружил на макете вот такую тень

210