На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Создание объекта на карте

Поиск  Пользователи  Правила  Войти
Форум » Серверные приложения » GIS WebService
Страницы: 1 2 3 След.
RSS
Создание объекта на карте, Создание точки или объекта на карте и графическое отображение
 
Здравствуйте!

Пробую создавать точки на карте в демо-версии программы. Появилась пара вопросов.
1. Согласно документаци системного программиста в п. 6.5.6.2 выполняю команду Insert:
http://localhost/GISWebServiceSE/service.php?RESTMETHOD=Transaction&LAYER_ID=0001
с нагрузкой XMLRPC:
Код
<wfs:Transaction
version="2.0.0"
service="WFS"
handle="Transaction 1"
xmlns:bsd="http://www.gisinfo.net/bsd"
xmlns:wfs="http://www.opengis.net/wfs/2.0"
xmlns:fes="http://www.opengis.net/fes/2.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.gisinfo.net/bsd
http://www.gisinfo.net/bsd/topomap.xsd
http://www.opengis.net/wfs/2.0
http://schemas.opengis.net/wfs/2.0.0/wfs.xsd
http://www.opengis.net/gml/3.2
http://www.opengis.net/gml/3.2.1/gml.xsd">

<wfs:Insert handle=”Signature 1”>
<bsd:Vegetation gml:id="Ногинский район">
<bsd:VegetationCode>71132100</bsd:VegetationCode>
<gml:name>Новый GML объект</gml:name>
<gml:Point srsName="urn:ogc:def:crs:EPSG:4326">
<gml:pos srsDimension="3">55.890049
38.603967
111111.000</gml:pos>
</gml:Point>
</bsd:Vegetation>
</wfs:Insert>
</wfs:Transaction>
Команда благополучно выполняется, приходит ответ:
Код
<wfs:TransactionSummary>
<wfs:totalInserted>1</wfs:totalInserted>
<wfs:totalReplaced>0</wfs:totalReplaced>
<wfs:totalUpdated>0</wfs:totalUpdated>
</wfs:TransactionSummary>
... 
Не очень ясны 3 строки в XMPRPC запросе:
Код
<wfs:Insert handle=”Signature 1”>                    // это просто дескриптор операции? За что отвечает этот параметр? Он может быть любой?
<bsd:Vegetation gml:id="Ногинский район">            // где можно увидеть список всех доступных gml:id? 
<bsd:VegetationCode>71132100</bsd:VegetationCode>    // где можно посмотреть список возможных кодов?
Я могу посмотреть новые объекты по запросу
http://localhost/GISWebServiceSE/service.php?REQUEST=GetCapabilities&version=2.0.0&s...
и объекты там отображаются, но если в строке
Код
<bsd:VegetationCode>71132100</bsd:VegetationCode>
я  задаю какое-либо другое значение кода, то результат хоть и возвращается  положительным, что добавился еще один объект, но по запросу  GetCapabilities новая точка не отображается. Из-за чего она не отображается?
Каким образом точку можно увидеть на карте? Как она должна выглядеть?

2. Согласно документаци системного программиста в п. 6.5.6.5 приводится пример запроса Replace/Insert/Update.
Я меняю часть запроса Insert, приведенного выше, на Insert из примера в этом пункте:
Код
<wfs:Transaction
version="2.0.0"
service="WFS"
handle="Transaction 1"
xmlns:bsd="http://www.gisinfo.net/bsd"
xmlns:wfs="http://www.opengis.net/wfs/2.0"
xmlns:fes="http://www.opengis.net/fes/2.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.gisinfo.net/bsd
http://www.gisinfo.net/bsd/topomap.xsd
http://www.opengis.net/wfs/2.0
http://schemas.opengis.net/wfs/2.0.0/wfs.xsd
http://www.opengis.net/gml/3.2
http://www.opengis.net/gml/3.2.1/gml.xsd">

<wfs:Insert handle=”Insert 01”>
<bsd:Signatures gml:id="Ногинский район">
<bsd:SignaturesCode>910220000</bsd:SignaturesCode>
<gml:name>ГЕОГРАФИЧЕСКИЕ НАЗВАНИЯ (Бм-431) синий 1.6V</gml:name>
<bsd:FontHeigth>1.6 мм</bsd:FontHeigth>
<bsd:SignatureType>РАСПОЛОЖЕННАЯ ПРОИЗВОЛЬНО</bsd:SignatureType>
<gml:Curve srsName="urn:ogc:def:crs:EPSG:4326">
<gml:segments>
<gml:name>Ч</gml:name>
<gml:LineStringSegment srsDimension="2" count="2">55.9836525265 38.3917607361
55.9821695092
38.3932895382 </gml:LineStringSegment>
<gml:name>е</gml:name>
<gml:LineStringSegment srsDimension="2" count="2">55.9815658341 38.3939030361
55.9803028018 38.3951169201</gml:LineStringSegment>

</gml:segments>
</gml:Curve>
</bsd:Signatures>
</wfs:Insert>
</wfs:Transaction>
Но в результате ничего не добавляется, хотя ошибки тоже нет:
Код
...
<wfs:TransactionSummary>
<wfs:totalInserted>0</wfs:totalInserted>
<wfs:totalReplaced>0</wfs:totalReplaced>
<wfs:totalUpdated>0</wfs:totalUpdated>
</wfs:TransactionSummary>
... 
Почему в данном случае добавления не происходит?
 
Код
<wfs:Insert handle=”Signature 1”>  


Это идентификатор транзакции. Может быть любым. Необходим только для клиентской части, чтобы слать запросы в многопоточном асинхронном  режиме. Сервером игнорируется.

Код
<bsd:Vegetation gml:id="Ногинский район">

Для транзакции Insert идентификатор может быть любым и необходим лишь для стандарта по передачи данных.
Код
 bsd:Vegetation
обязателен и говорит в какой слой карты необходимо добавить объект. Сервер сам задаёт новый идентификатор, согласно внутреннему списку объектов. Идентификатор объекта состоит из Название карты.порядковый номер на карте
Для получения Название карты есть запрос GetSheetName.

Код
<bsd:VegetationCode>71132100</bsd:VegetationCode>

Список кодов можно посмотреть в схеме к данному слою. Запрос DescribeFeatureType.

Добавление не проходит, так как код поданный вами отсутствует в схеме. Сервис отвечает вам что кол-во созданных объектов - 0. Понять точную причину отказа возможно, проанализировав логи службы appservice.
 
Спасибо большое за пояснения, объект создается, отображается на карте.

Позвольте уточнить еще некоторые моменты.
1. Например, я создаю объект "КУСТАРНИКИ КОЛЮЧИЕ (сплошные заросли)", код которого 71211100 командой
Код
...
<wfs:Insert handle=”Signature 1”>
<bsd:Vegetation gml:id="Ногинский район">
<bsd:VegetationCode>71211100</bsd:VegetationCode>
<gml:name>Новый GML объект</gml:name>
<gml:Point srsName="urn:ogc:def:crs:EPSG:4326">
<gml:pos srsDimension="3">55.825519
38.442400
111111.000</gml:pos>
</gml:Point>
</bsd:Vegetation>
</wfs:Insert>
</wfs:Transaction>
Кустарник создается, но чтобы его увидеть на карте, мне приходится приближать ее до масштаба 1:1000. Как можно настроить, чтобы значок объекта отображался при более мелком масштабе карты?

2. Когда я пытаюсь удалить этот объект командой
Код
...
<wfs:Delete handle=”Delete 1” typeName="bsd:Vegetation">
<fes:Filter>
<fes:ResourceId rid="Ногинский район:252488" />
</fes:Filter>
</wfs:Delete>
</wfs:Transaction>
то результат возвращается положительный:
Код
...
<wfs:totalInserted>0</wfs:totalInserted>
<wfs:totalReplaced>0</wfs:totalReplaced>
<wfs:totalUpdated>1</wfs:totalUpdated>
...
Также согласно выводу команды DescribeFeatureType объект больше не отображается, но на карте в том месте, где он был, по-прежнему висит значок куста и не исчезает, с чем это связано? Как убрать значок с карты?

3. Если я попробую повторить команду удаления объекта, который уже удалил, по-прежнему возвращается аналогичный положительный резутльтат, возможно, я неверно удаляю объект? Ведь при повторном удалении должна быть ошибка, объект уже был удален.

4. Как можно удалить несколько объектов за одну команду (например, несколько кустов)? Я смотрел гл. 7 в ISO 19143:2010 и пробовал выполнить согласно примеру оттуда (пример 5 из C5 Filter examples):
Код
...
<wfs:Delete handle=”Delete 1” typeName="bsd:Vegetation">
<fes:Filter>
<fes:ResourceId rid="Ногинский район:252488" />
<fes:ResourceId rid="Ногинский район:252489" />
</fes:Filter>
</wfs:Delete>
</wfs:Transaction>
но в данном случае удаляется только первый объект в перечислении, остальные просто игнорируются. Результат возвращается также положительный.
 
1) Для этого вам необходимо изменить границы видимости объекта в классификаторе rsc, привязанного к карте.
2) Каким запросом вы проверяете наличие объекта на карте? GetTile или GetMap?
3) При повторном удалении сервер должен говорить что удалить не удалось. Возможно и в первом случае у вас не происходит удаления. Для понятия причины необходим анализ лог файла.
4) Попробуйте так
Код
<wfs:Delete handle=”Delete 1” typeName="bsd:Vegetation">
<fes:Filter>
<fes:ResourceId rid="Ногинский район:252489" />
</fes:Filter>
</wfs:Delete>
<wfs:Delete handle=”Delete 1” typeName="bsd:Vegetation">
<fes:Filter>
<fes:ResourceId rid="Ногинский район:252488" />
</fes:Filter>
</wfs:Delete>
 
Цитата
Владимир Железняков написал:
4) Попробуйте так
Спасибо, теперь 3 объекта удаляется. Но по-прежнему можно повторно выполнить запрос и вернется такой же положительный результат.

Цитата
Владимир Железняков написал:
3) При повторном удалении сервер должен говорить что удалить не удалось. Возможно и в первом случае у вас не происходит удаления. Для понятия причины необходим анализ лог файла.
Вот вывод двух последовательных удалений по 3 объекта, в обоих случаях возвращается:
Код
<wfs:totalUpdated>3</wfs:totalUpdated>
Вот часть лога для двух удалений:
Код
>>>> 20170622 18:58:52 -2030917760  10017  appservice.exe  TMapServer  RealeseConnect    Active SOCKET Count=  0 
>>>> 20170622 18:58:57 -2030917760  10017  appservice.exe  TMapServer  RealeseConnect    Active SOCKET Count=  0 
>>>> 20170622 18:59:02 -2030917760  10017  appservice.exe  TMapServer  RealeseConnect    Active SOCKET Count=  0 
>>>> 20170622 18:59:07 -2030917760  10017  appservice.exe  TMapServer  RealeseConnect    Active SOCKET Count=  0 
>> 18:59:12 2035562240 RestMethodэRESTMETHOD:Transaction
LAYER_ID:0001
ROLENAME:GUESTS
XML:1039
<wfs:Transaction
version="2.0.0"
service="WFS"
handle="Transaction 1"
xmlns:bsd="http://www.gisinfo.net/bsd"
xmlns:wfs="http://www.opengis.net/wfs/2.0"
xmlns:fes="http://www.opengis.net/fes/2.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.gisinfo.net/bsd
http://www.gisinfo.net/bsd/topomap.xsd
http://www.opengis.net/wfs/2.0
http://schemas.opengis.net/wfs/2.0.0/wfs.xsd
http://www.opengis.net/gml/3.2
http://www.opengis.net/gml/3.2.1/gml.xsd">

<wfs:Delete handle=”Delete 1” typeName="bsd:Vegetation">
<fes:Filter>
<fes:ResourceId rid="Ногинский район:252474" />
</fes:Filter>
</wfs:Delete>
<wfs:Delete handle=”Delete 1” typeName="bsd:Vegetation">
<fes:Filter>
<fes:ResourceId rid="Ногинский район:252478" />
</fes:Filter>
</wfs:Delete>
<wfs:Delete handle=”Delete 1” typeName="bsd:Vegetation">
<fes:Filter>
<fes:ResourceId rid="Ногинский район:252484" />
</fes:Filter>
</wfs:Delete>
</wfs:Transaction>
.END<
---> 20170622 18:59:12 2035562240  10017  supserv.dll  Open  TNewDataList    Open exist data number=1 name=/var/Panorama/appservice/Data/Noginsk/Noginsk.sitx 
>>>> 20170622 18:59:12 2035562240  10017  appservice.exe  Send  TMapConnect    Request complete 
>>>> 20170622 18:59:12 -2030917760  10017  appservice.exe  TMapServer  RealeseConnect    Active SOCKET Count=  0 
>>>> 20170622 18:59:17 -2030917760  10017  appservice.exe  TMapServer  RealeseConnect    Active SOCKET Count=  0 
>>>> 20170622 18:59:22 -2030917760  10017  appservice.exe  TMapServer  RealeseConnect    Active SOCKET Count=  0 
>>>> 20170622 18:59:27 -2030917760  10017  appservice.exe  TMapServer  RealeseConnect    Active SOCKET Count=  0 
>>>> 20170622 18:59:32 -2030917760  10017  appservice.exe  TMapServer  RealeseConnect    Active SOCKET Count=  0 
>>>> 20170622 18:59:37 -2030917760  10017  appservice.exe  TMapServer  RealeseConnect    Active SOCKET Count=  0 
>>>> 20170622 18:59:42 -2030917760  10017  appservice.exe  TMapServer  RealeseConnect    Active SOCKET Count=  0 
>>>> 20170622 18:59:47 -2030917760  10017  appservice.exe  TMapServer  RealeseConnect    Active SOCKET Count=  0 
>>>> 20170622 18:59:52 -2030917760  10017  appservice.exe  TMapServer  RealeseConnect    Active SOCKET Count=  0 
>>>> 20170622 18:59:57 -2030917760  10017  appservice.exe  TMapServer  RealeseConnect    Active SOCKET Count=  0 
>> 19:00:01 2035562240 RestMethodэRESTMETHOD:Transaction
LAYER_ID:0001
ROLENAME:GUESTS
XML:1039
<wfs:Transaction
version="2.0.0"
service="WFS"
handle="Transaction 1"
xmlns:bsd="http://www.gisinfo.net/bsd"
xmlns:wfs="http://www.opengis.net/wfs/2.0"
xmlns:fes="http://www.opengis.net/fes/2.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.gisinfo.net/bsd
http://www.gisinfo.net/bsd/topomap.xsd
http://www.opengis.net/wfs/2.0
http://schemas.opengis.net/wfs/2.0.0/wfs.xsd
http://www.opengis.net/gml/3.2
http://www.opengis.net/gml/3.2.1/gml.xsd">

<wfs:Delete handle=”Delete 1” typeName="bsd:Vegetation">
<fes:Filter>
<fes:ResourceId rid="Ногинский район:252474" />
</fes:Filter>
</wfs:Delete>
<wfs:Delete handle=”Delete 1” typeName="bsd:Vegetation">
<fes:Filter>
<fes:ResourceId rid="Ногинский район:252478" />
</fes:Filter>
</wfs:Delete>
<wfs:Delete handle=”Delete 1” typeName="bsd:Vegetation">
<fes:Filter>
<fes:ResourceId rid="Ногинский район:252484" />
</fes:Filter>
</wfs:Delete>
</wfs:Transaction>
.END<
---> 20170622 19:00:01 2035562240  10017  supserv.dll  Open  TNewDataList    Open exist data number=1 name=/var/Panorama/appservice/Data/Noginsk/Noginsk.sitx 
>>>> 20170622 19:00:01 2035562240  10017  appservice.exe  Send  TMapConnect    Request complete 
>>>> 20170622 19:00:02 -2030917760  10017  appservice.exe  TMapServer  RealeseConnect    Active SOCKET Count=  0 
>>>> 20170622 19:00:07 -2030917760  10017  appservice.exe  TMapServer  RealeseConnect    Active SOCKET Count=  0 
>>>> 20170622 19:00:12 -2030917760  10017  appservice.exe  TMapServer  RealeseConnect    Active SOCKET Count=  0 
>>>> 20170622 19:00:17 -2030917760  10017  appservice.exe  TMapServer  RealeseConnect    Active SOCKET Count=  0 
>>>> 20170622 19:00:22 -2030917760  10017  appservice.exe  TMapServer  RealeseConnect    Active SOCKET Count=  0 
Цитата
Владимир Железняков написал:
2) Каким запросом вы проверяете наличие объекта на карте? GetTile или GetMap?
Я загружал в браузере карту по вдресу http://localhost/GISWebServerSE/index.php
По адресу http://localhost/GISWebServerSE/admin/admin.php
в описании слоя "Ногинский район" URL Сервиса: стоит
SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=0001&ST YLE=default&TILEMATRIXSET=%tilematrixset&TILEMATRIX=%z&TILEROW=%y&TILECOL=%x&FORMAT=image/png
Тут ведь задается, каким методом отрисовывается карта?

Цитата
Владимир Железняков написал:
1) Для этого вам необходимо изменить границы видимости объекта в классификаторе rsc, привязанного к карте.
Как можно редактировать классификатор? В браузере через GIS такой функционал работы с ними возможен?
 
Цитата
researcher написал:
Как можно редактировать классификатор?
В любом настольном приложении линейки ГИС "Панорама". Причем, после редактирования, нужно пересоздать Схему. Можно простым удалением старой (сервис автоматически создаст новую), или в настройках сервиса выставить автоматическое обновление.
 
Я извиняюсь, но не могли бы вы уточнить, что подуразумевается под этой фразой?
Цитата
Vitaliy Belenkov написал:
В любом настольном приложении линейки ГИС "Панорама".
Я могу редактировать файлы напрямую в текстовом редакторе. Или через браузер, где я могу заниматься настройкой сервиса и сервера GIS по адресам http://localhost/GISWebServiceSE/admin/admin.php и http://localhost/GISWebServerSE/admin/admin.php. На данных  страницах управления я не нашел, где это можно было бы сделать.

В документе "Прикладные задачи. Редактор классификатора" (ПАРБ.00227-01 98 01) в 1 главе пишется:
Цитата
Редактор  классификатора  может  быть  вызван из  списка  прикладных  задач,  а  также  через всплывающее по правой кнопке меню в задаче Легенда карты или диалоге Выбор объекта.
Но я так и не нашел ни задачу Легенда карты, ни как вызывать из списка прикладных задач.

Где именно возможно редактировать классификатор?
 
Запросы GetTile - выдают статическую картинку, которая кэшируется на сервере и клиенте. Чтобы увидеть изменения вам необходимо почистить кэш на сервере и клиенте. Либо установить сервис ImageryService, который это будет делать за вас в автоматическом режиме при изменении данных. Либо посылать запросы GetMap - которые выдают информацию на лету.

По поводу множественного удаления - какая версия сервиса и ОС?
 
Цитата
researcher написал:
Где именно возможно редактировать классификатор?
Еще раз - в любом настольном приложение линейки ГИС "Панорама", как пример, - https://gisinfo.ru/products/mapview12.htm
 
1.
Цитата
Владимир Железняков написал:
Запросы GetTile - выдают статическую картинку, которая кэшируется на сервере и клиенте. Чтобы увидеть изменения вам необходимо почистить кэш на сервере и клиенте. Либо установить сервис ImageryService, который это будет делать за вас в автоматическом режиме при изменении данных. Либо посылать запросы GetMap - которые выдают информацию на лету.
Да, спасибо, после очистки кеша все вопросы с отображением и масштабированием отпали - значки до этого грузились с кеша, поэтому не исчезали после удаления.
Скажите, а правильно ли я задаю место, где этот параметр изменяется?
По адресу http://localhost/GISWebServerSE/admin/admin.php в описании слоя "Ногинский район" в "URL Сервиса:" стоит
SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=0001&ST YLE=default&TILEMATRIXSET=%tilematrixset&TILEMATRIX=%z&TILEROW=%y&TILECOL=%x&FORMAT=image/png
я меняю на
SERVICE=WMTS&REQUEST=GetMap&VERSION=1.0.0&LAYER=0001&ST YLE=default&TILEMATRIXSET=%tilematrixset&TILEMATRIX=%z&TILEROW=%y&TILECOL=%x&FORMAT=image/png
Этот параметр здесь задается? У меня после изменения по-прежнему карты грузятся из кеша.

Сбросить кэш удается лишь при выполнении 2-х операций: очистка кэша в бразере + удаление папки /var/Panorama/giswebservicese/Temp/WMS/0001. Возможно ли без этих операций, чтобы каждый раз грузилась карта с сервера, игнорируя кэш?

2.
Цитата
Владимир Железняков написал:
По поводу множественного удаления - какая версия сервиса и ОС?
lsb_release -a
No LSB modules are available.
Distributor ID: AstraLinuxSE
Description:    Astra Linux SE 1.5 (Smolensk)
Release:        1.5
Codename:       smolensk

ГИС:
Application Service x64   11.5.0

Причем, если даже написать в одном запросе удаление 3-х объеков с одинаковыми идентификаторами:
Код
<fes:Filter>
<fes:ResourceId rid="Ногинский район:252455" />
</fes:Filter>
</wfs:Delete>
<wfs:Delete handle=”Delete 1” typeName="bsd:Vegetation">
<fes:Filter>
<fes:ResourceId rid="Ногинский район:252455" />
</fes:Filter>
</wfs:Delete>
<wfs:Delete handle=”Delete 1” typeName="bsd:Vegetation">
<fes:Filter>
<fes:ResourceId rid="Ногинский район:252455" />
</fes:Filter>
все равно возвращается положительный результат, что удалились 3 объекта.
Код
<wfs:totalUpdated>3</wfs:totalUpdated>

3.
Цитата
Vitaliy Belenkov написал:
Цитата
 researcher  написал:
Где именно возможно редактировать классификатор?
Еще раз - в любом настольном приложение линейки ГИС "Панорама", как пример, -  https://gisinfo.ru/products/mapview12.htm
Спасибо, попробую.

4. Скажите, количество объектов для добавления ограничено? Сейчас объекты добавляются с идентификатором 252452, какой номер будет после 999999?

5. Возможно ли передавать свою дополнительную информацию об объекте? Могу ли я передать какое-либо описание объекта в виде строки при выполнении операции wfs:Insert? Возможно ли это описание потом увидеть на карте при клике на объект мышкой?
Страницы: 1 2 3 След.
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности