Lakovshchikov / DoSS

0 stars 0 forks source link

Работа с запросами #3

Closed Lakovshchikov closed 5 years ago

Lakovshchikov commented 6 years ago

Разбирал запросы с ПКК. Вот что получилось понять. Не знаю как можно воровать координаты участка. Запросы Получилось записать информацию об земельном участке из Json файла в объект. Но пока с локальной версии файла Json.

wldmr-key commented 6 years ago

Неплохо, но не очень качественно. Ты почему к разным участкам запросы написал в примерах? я 20 минут потерял )) Приду домой - гляну еще и напишу комментарий Кстати, чтобы не изобретать велосипед посмотри (я не смотрел) есть ли что-то здравое в народных потугах - https://github.com/rendrom/rosreestr2coord https://github.com/muxtor/yii2-pkk5-component https://ru.stackoverflow.com/questions/636331/%D0%A1%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D1%83%D0%B5%D1%82-%D0%BB%D0%B8-%D0%A4%D0%93%D0%98%D0%A1-%D0%95%D0%93%D0%A0%D0%9D-api

Lakovshchikov commented 6 years ago

@wldmr-key Что касается первой ссылки. Я все поставил, но получить координаты не удалось. Вот команда: rosreestr2coord -c 33:10:001009:18 Предварительно поменял путь сохраняемых файлов: rosreestr2coord -o C:\Users\Иван\Desktop Результат:

Start downloading area info: http://pkk5.rosreestr.ru/api/features/1/33:10:1009:18 Area info downloaded. _Traceback (most recent call last): File "C:\Python27\Scripts\rosreestr2coord-script.py", line 11, in load_entry_point('rosreestr2coord==1.5.2', 'console_scripts', 'rosreestr2coord')() File "C:\Python27\lib\site-packages\scripts\console.py", line 128, in main _main() File "C:\Python27\lib\site-packages\scripts\console.py", line 97, in _main get_by_code(code, path, area_type, catalog_path, with_attrs, epsilon, coord_out, output, display, center_only, with_proxy=opt.proxy) File "C:\Python27\lib\site-packages\scripts\console.py", line 103, in get_by_code coord_out=coord_out, center_only=center_only, with_proxy=with_proxy) File "C:\Python27\lib\site-packages\scripts\parser.py", line 137, in init geometry = self.get_geometry() File "C:\Python27\lib\site-packages\scripts\parser.py", line 275, in get_geometry return self.parse_geometry_from_image() File "C:\Python27\lib\site-packages\scripts\parser.py", line 287, in parse_geometry_from_image clear_code=self.clear_code(self.code_id), output_dir=tmp_dir, make_request=self.make_request) File "C:\Python27\lib\site-packages\scripts\merge_tiles.py", line 320, in init file_name_prefix=clear_code, kwargs) File "C:\Python27\lib\site-packages\scripts\merge_tiles.py", line 95, in init self.tile_dir = self.get_tile_dir(zoom) File "C:\Python27\lib\site-packages\scripts\merge_tiles.py", line 338, in get_tile_dir return os.path.join(self.output_dir, "%s" % self.file_nameprefix.replace(":", "")) File "C:\Python27\lib\ntpath.py", line 85, in join result_path = result_path + ppath UnicodeDecodeError: 'ascii' codec can't decode byte 0xc8 in position 7: ordinal not in range(128)**

Итог: файл не появился. Не знаю с чем связано. Пробовал поменять путь, что бы не было кириллицы в пути, не помогло. Тот же результат.

По второй ссылке. Поставить не получилось. Начал ставить Composer. он просит какой-то "command-line PHP". Погуглив, узнал, что это php.exe. Начал искать на пк, не нашел. Решил поставить PHP. Не понял как. Вот тут смотрел: http://php.net/manual/ru/install.windows.php Итог: мб позже поставлю все что нужно. Сейчас не стал разбираться.

По третьей ссылке. Полезное описание некоторых запросов. Еще в комментариях полезное нашел: https://github.com/KirillNaumkin/RosreestrREST Итог: поиграюсь с найденной библиотекой - опишу что получилось.

wldmr-key commented 6 years ago

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

wldmr-key commented 6 years ago

Чуть повозился с твоими запросами

Смотри (здесь будут куски html и запросы - для наглядности)

<img class="leaflet-tile leaflet-tile-loaded" src="https://pkk5.rosreestr.ru/arcgis/rest/services/Cadastre/Cadastre/MapServer/export?dpi=96&amp;transparent=true&amp;format=png32&amp;bbox=3947819.6368727833,7235223.349361643,3952711.606683034,7240115.319171896&amp;size=1024,1024&amp;bboxSR=102100&amp;imageSR=102100&amp;f=image" style="height: 1024px; width: 1024px; left: -513px; top: 151px;">

запрос arcgis куска карты с границами кадастровых участков - следует обратить внимание, что запрашивается tile с требуемыми координатами и смещается как абсолютный элемент

<img class="leaflet-image-layer leaflet-zoom-animated" src="https://pkk5.rosreestr.ru/arcgis/rest/services/Cadastre/CadastreSelected/MapServer/export?dpi=96&amp;transparent=true&amp;format=png32&amp;bbox=3951187.643431599,7237874.758780285,3953839.05285024,7240836.693626336&amp;size=555,620&amp;bboxSR=102100&amp;imageSR=102100&amp;layers=show%3A6%2C7&amp;layerDefs=%7B%226%22:%22ID%20=%20'40:15:130501:15'%22,%227%22:%22ID%20=%20'40:15:130501:15'%22%7D&amp;f=image" style="opacity: 0.5; transform: translate3d(0px, 0px, 0px); width: 555px; height: 620px;"> а это - оформленный в html полупрозрачный кадастровый участок. Обрати внимание - он плюхается на видимую область карты целиком

Разберем еще раз этот запрос: https://pkk5.rosreestr.ru/arcgis/rest/services/Cadastre/CadastreSelected/MapServer/export?dpi=96&transparent=true&format=png32&bbox=3951187.643431599,7237874.758780285,3953839.05285024,7240836.693626336&size=555,620&bboxSR=102100&imageSR=102100&layers=show%3A6%2C7&layerDefs=%7B%226%22:%22ID%20=%20%2740:15:130501:15%27%22,%227%22:%22ID%20=%20%2740:15:130501:15%27%22%7D&f=image

запрос выделенного участка

Bounding Box - bbox=3951187.643431599,7237874.758780285,3953839.05285024,7240836.693626336 - координаты, соответствующие отображаемой области на видимой в окне карте (чтобы ровно наложить рисунок) Bounding Box Spatial Reference - bboxSR=102100 layers=show%3A6%2C7 == show:6,7 -очевидно номера показываемых слоев карты Layer Definitions - layerDefs=%7B%226%22:%22ID%20=%20%2740:15:130501:15%27%22,%227%22:%22ID%20=%20%2740:15:130501:15%27%22%7D == layerDefs={"6":"ID = '40:15:130501:15'","7":"ID = '40:15:130501:15'"} - поисковая строка Image Size = size=555,620 - размер экранной области, куда попадет рисунок в пикселях Image Spatial Reference - imageSR=102100 Image Format - format=png32 (у аркгис есть еще png, png8, png24, jpg, gif, pdf, bmp, svg) Background Transparent - transparent=true - понятно DPI - dpi=96 - понятно

Ну, и теперь вишенка на торте: если пересчитать координаты bounding box, то можно выполнять масштабирование границ без всяких усилий. Вот я пересчитал границы, уменьшив прямоугольник вдвое по широте и долготе: 3951850.49578625,7238615.24249179,3953176.20049558,7240096.20991482

подставим в запрос:

https://pkk5.rosreestr.ru/arcgis/rest/services/Cadastre/CadastreSelected/MapServer/export?dpi=96&transparent=true&format=png32&bbox=3951850.49578625,7238615.24249179,3953176.20049558,7240096.20991482&size=555,620&bboxSR=102100&imageSR=102100&layers=show%3A6%2C7&layerDefs=%7B%226%22:%22ID%20=%20%2740:15:130501:15%27%22,%227%22:%22ID%20=%20%2740:15:130501:15%27%22%7D&f=image

@Lakovshchikov Можешь проверять...

Lakovshchikov commented 5 years ago

@wldmr-key Что получилось за прошедшее время: 1) Переделал немного UI Все равно не нравится, подумаю еще. 2) Работает выбор участка. То, что показано на предыдущем скрине не нарисовано, а работает. Но возникли трудности. Некоторые поля, в запросе к сервису возвращаются в виде кода, например значение поля fp:200 говорит о том, что это "собственность публично правовых образований". Таких полей я нашел 4 штуки, придется искать коды всех возможных вариантов. Хуже всего с полем UnitCode. Оно отвечает за характеристику "Разрешенное использование". Очень много различных вариантов. Больше 2-х совпадений не находил, потыкав по 10 участкам. Узнаю так ли важен этот пункт, может быть можно его пропустить. Еще проблема с характеристикой "Кадастровый инженер". Запрос не выдает информации о нем. Ее можно получить только через полный запрос с jQuery и прочим. Я пока не смотрел как он формируется, но есть подозрения что просто так я его не получу. А если и получу то придется вырезать значение нужное из строки. Информация о инженере в полях ci_first, ci_patronymic и ci_surname Спрошу еще про важность этого пункта. Может быть можно пропустить.

  1. Помимо земельных участков и иерархии (кадастровый квартал и тд) я нашел еще такую вещь как "Автомобильная дорога", нажав на ПКК на наш сквер Мира. Сделать отдельным объектом, со своим запросом? Или не входит в задачу? Тогда все что не участок, то не работает просто? Ну на этапе курсовой по крайней мере.
  2. Хотел сделать нормальную установку слоев, с помощью checkbox и возникла проблема. По хорошему нужно как-то Google Maps карты (вид со спутника) туда запихнуть, потому что карты от аркгис очень плохого качества и старые. Да и улицы бы тоже не плохо взять от гугл. Порывшись в интернете я понял что не смогу их добавить. Просто нет такой возможности. Находил что-то про JavaScript, но думаю что не поможет. Что посоветуете? Или я не так понял, и все можно?
wldmr-key commented 5 years ago

Ее можно получить только через полный запрос с jQuery и прочим.

насчет jquery - фигня! он точно не при делах на сервере.

Сделать отдельным объектом, со своим запросом? Или не входит в задачу? Тогда все что не участок, то не работает просто?

не входит в задачу. Пока, во всяком случае...

о думаю что не поможет. Что посоветуете? Или я не так понял, и все можно?

можно-можно для ари гуглмэпсов нужен ключ, но он бесплатный варианты - https://developers.google.com/maps/documentation/javascript/tutorial здесь предложение альтернативы бинга и описание как засуныть в wpf - https://blog.scottlogic.com/2012/05/02/mapping-in-wpf-silverlight-and-wp7.html
здесь самый симпатичный на первый взгляд вариант - https://www.c-sharpcorner.com/article/learn-wpf-using-google-place-api/

Lakovshchikov commented 5 years ago

@wldmr-key Сел я за запрос к участку. И тут из неоткуда проблема. https://pkk5.rosreestr.ru/arcgis/rest/services/Cadastre/Cadastre/MapServer/ больше не показывает ПКК. Вдруг, ни с того ни с сего. Я не трогал этот код, проверил ссылку на сервис. Взял ее из второй ветки, там все работало. Не работает. Подставлял другую Uri, из примера api arcgis - все работает!! Порылся на сайте ППК и обнаружил, что они загружают куски карты по ссылке, где вначале написано a,b,c или d. Например: https://**a**pkk5.rosreestr.ru/arcgis/rest/services/Cadastre/Cadastre/MapServer/ По-моему, этого не было раньше. Подставлял такие ссылки - не работает. Делаю все как в примере тут. В общем 33 несчастья. Потратил больше 2 часов, результата 0. Мой код для карты. Все описано в конструкторе. Они могли резко закрыть доступ к этой функции? Ну теоретически? Все складывается так, что бы я это делал в вебе. Скачал версию из второй ветки, ПКК не отображается.

wldmr-key commented 5 years ago

не думаю, что все произошло так внезапно - гуглеж по apkk5 + rosreestr показывает, что летом вопросы включающие такой адрес уже задавались. Не думаю, что здесь злой умысел - скорее проксирование запросов. скорее причина в другом

Lakovshchikov commented 5 years ago

@wldmr-key Еще и не работает export карты из сервиса аркгиса. Вот ваша ссылка, которую вы мне кидали первый раз, еще по почте, как пример изображения с ПКК. Она не работает. А вот ссылка на export картинки, она тоже не так давно работала, а сейчас ошибка. https://pkk5.rosreestr.ru/arcgis/rest/services/Cadastre/Cadastre/MapServer - Это еще работает. Не понимаю как ПКК отображает картинки (пример) из этого сервиса, если он не доступен. а,b,c или d в начале ссылки не помогают (хоть как я понял они и не влияют). Не совсем понимаю что произошло за пару дней. То ли они сбоят, то ли доступ ограничили, или еще что-то. Ничего в блогах техподдержки и на офф сайтах arcgis и росреестра не нашел. А в техподдержку arcgis я написать не могу. Прав нет. Там или платный аккаунт нужен, или что-то с организацией делать, не особо разобрался

Lakovshchikov commented 5 years ago

@wldmr-key Информация выше уже не особо важна. Получилось загрузить ПКК через https://pkk5.rosreestr.ru/arcgis/rest/services/Cadastre/CadastreWMS/MapServer Правда загрузка идет подольше, но терпимо

wldmr-key commented 5 years ago

ок, как ты понял, бзвыходных положений не бывает :)

Lakovshchikov commented 5 years ago

@wldmr-key возник вопрос. Как отображать png с выбранным участок поверх карты, что бы при этом карта оставалась активной? Я его помещаю в контейнер . Через Zindex не получается, наверное надо как-то через фокус. Вообще, наверное, должно быть как-то так:

1) Элемент image расположен поверх элемента карты. 2) Как только по элементу image нажимают ЛКМ, он исчезает. Событие MouseLeftButtonDown. Свойство Visibility = hidden или Collapsed (по моему, тут разницы нет). 3) Управление переходит на карту, пользователь может выбрать участок или переместить карту 4) Как только пользователь отпустил ЛКМ, появляется обновленный . MouseLeftButtonUp

Я додумался только до такого алгоритма. С реализацией проблема. Во-первых, это все происходит за один клик ЛКМ. Передать фокус и объяснить, что этот клик изначально относился к карте, и она (карта) должна перемещаться - пока не понимаю как. Плюс, пока сейчас писал, вспомнил про скролл и масштаб. С этим тоже надо что-то делать. Мб делать неактивным по нажатию ПКМ?. Как-то неудобно. Еще нашел вот такое. Не знаю поможет или нет. Не особо разобрался с TraversalRequest. Надо как-то продумать алгоритм, в голову ничего не приходит пока. Мб чего посоветуете?

Возможно, можно запихнуть png в карту, но у меня не получилось. Там есть вот такое. Через Uri не получилось.

Из позитивного. Связал координаты рабочей области с координатами карты. Получаю изображение участка в нужном масштабе и положении (вроде как, надо еще потестить, но похоже что и правда все работает). Осталось обновлять при скроллах и перемещении, но это не проблема.

Сейчас пока займусь выбором карт и атрибутами. Надо площадь участка вытащить и то, что было ключ-значение.

wldmr-key commented 5 years ago

я бы использовал в качестве контейнера Grid (последний элемент - картинка - будет сверху). Тогда можно сделать частичное перекрытие и оставить снаружи картинки управление картой. нажатие мыши на области картинки я бы обрабатывал либо вызывая методы обработчика карты (если они доступны), либо перехватывая их на картинке и генерируя новые на карте

Lakovshchikov commented 5 years ago

@wldmr-key то есть вырезать по контуру изображение участка и сопоставить с координатами? Как это можно сопоставить? Обрабатывать изображение?

wldmr-key commented 5 years ago

нет-нет - разумеется прямоугольная картинка (или ее часть, если ты получил картинку размером больше видимой части), которая положена в грид сверху

Lakovshchikov commented 5 years ago

@wldmr-key Отчёт за неделю:

1) Выбор участка работает, отображение верное, при изменении рабочей области все подстраивается 2) Выбор карт пошел не совсем по плану. Как обычно в общем, завтра на паре покажу 3) Как работать с картой и при этом отображать картинку поверх не придумал, пока. 4) РПЗ не занимался на этой неделе. Нужно как-то разделить материал на 2 РПЗ. Фишка в том, что пункты содержания практически идентичны. Если судить по методикам. Хотелось бы завтра это обсудить