Mapfeatureserver как замена ArcGIS Server

Обсуждение материалов сайта: вопросы, замечания, предложения
Аватара пользователя
vasnake
Интересующийся
Сообщения: 22
Зарегистрирован: 23 май 2013, 16:42
Репутация: 6
Откуда: Москва
Контактная информация:

Mapfeatureserver как замена ArcGIS Server

Сообщение vasnake » 24 май 2013, 15:00

Всем привет.
Предлагаю обсудить новую статью Mapfeatureserver как замена ArcGIS Server.
Статья рассказывает о новом программном проекте, позволяющем делать веб-карты такие же как на ArcGIS но без ArcGIS.

По правилам публикации полагается обсудить статью на форуме. Приступим?
It ain't easy. It just proves how great I am.

bim2010
Гуру
Сообщения: 977
Зарегистрирован: 27 янв 2009, 22:57
Репутация: 258

Re: Mapfeatureserver как замена ArcGIS Server

Сообщение bim2010 » 24 май 2013, 15:49

А Картобонус планируете выложить на https://github.com? В текущем варианте получается ружье без патронов. Т.е. клиентская часть доступна только через ваш хостинг?
В Картобонус нет загрузки шейп-файлов? Планируете?
В статье многовато слов про ArcGIS.

Аватара пользователя
vasnake
Интересующийся
Сообщения: 22
Зарегистрирован: 23 май 2013, 16:42
Репутация: 6
Откуда: Москва
Контактная информация:

Re: Mapfeatureserver как замена ArcGIS Server

Сообщение vasnake » 24 май 2013, 16:06

bim2010 писал(а):А Картобонус планируете выложить на https://github.com?
В текущем варианте получается ружье без патронов.
В Картобонус нет загрузки шейп-файлов? Планируете?
В статье многовато слов про ArcGIS.
* Картобонус на ГитХаб: да, мысль такая есть. Проблема в том, что там много работы надо провести по чистке кода, в то время как сам по себе Картобонус это просто расширение стандартного ArcGIS Viewer for Silverlight. В общем, если народу будет надо, выложим на ГитХаб.

* Ружье без патронов: не согласен. Помимо Картобонуса (бесплатного и доступного), есть пачка доступных решений от Esri, в статье я дал на них ссылку. Может имеет смысл осветить этот вопрос подробнее в статье?

* Загрузка шейп-файлов в Картобонус: совсем не по теме, но отвечу - чтобы реализовать такую функциональность нужен сервер, тогда как Картобонус исключительно клиентская часть для веб-ГИС. Собственно, пожелание "грузить шейпы" было одним из мотивов создания Mapfeatureserver. Получается ответ такой: при достаточном спросе на такую фунцию, мы сделаем связку Картобонус+MFS такую, чтобы можно было грузить шейпы. Но вопрос этот сильно не простой - авторизация пользователей, личные кабинеты, дисковые квоты - это серьезно.

* в статье многовато про АркГИС: согласен. Посмотрю, что можно сделать. Хотя, сколько слов "АркГИС" допустимо в статье про решение на платформе АркГИС?
It ain't easy. It just proves how great I am.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Mapfeatureserver как замена ArcGIS Server

Сообщение Максим Дубинин » 24 май 2013, 22:31

1. ArcGIS Server REST API это тоже самое что активно обсуждаемый в данный момент GeoServices REST API? Если да, стоит упомянуть, дать ссылку на OGC.
2. "для слоев типа Feature Layer" - стоит расписать, слои в формате ABC я понимаю, а тип Feature Layer честно говоря нет.

А вообще я правильно понял, что у вас получилась та самая открытая reference implementation стандарта на отсутствие которой сетуют критики GeoServices REST API?
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
vasnake
Интересующийся
Сообщения: 22
Зарегистрирован: 23 май 2013, 16:42
Репутация: 6
Откуда: Москва
Контактная информация:

Re: Mapfeatureserver как замена ArcGIS Server

Сообщение vasnake » 24 май 2013, 23:26

Максим Дубинин писал(а): 1. ArcGIS Server REST API это тоже самое что активно обсуждаемый в данный момент GeoServices REST API?...
2. "для слоев типа Feature Layer" - стоит расписать...
А вообще я правильно понял, что у вас получилась та самая открытая reference implementation стандарта...
* ArcGIS Server REST API это тоже самое что активно обсуждаемый в данный момент GeoServices REST API?
Точно не знаю. При поверхностном сравнении двух стандартов я разницы не нашел. Житейский опыт подсказывает, что хотя бы небольшое расхождение должно быть, как обычно в таких случаях. Лично я реализовывал требования спецификаций именно ArcGIS Server REST API и никаких других.

* слои в формате ABC я понимаю, а тип Feature Layer честно говоря нет
Кажется я начинаю понимать, что в статье не хватает чего-то вроде "введения в тему", где надо описать предметную область - API, типы данных, службы и проч. Попробую написать такую главу, заодно и про GeoServices REST API упомяну.

* у вас получилась та самая открытая reference implementation стандарта
Если не принимать во внимание, что это реализация спеков от Esri и реализовано пока только два типа запросов, то да :) можно считать что получилась. И определенно - открытая.
It ain't easy. It just proves how great I am.

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Mapfeatureserver как замена ArcGIS Server

Сообщение Denis Rykov » 25 май 2013, 06:26

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

1) Каковы преимущества и недостатки использования REST-сервисов для публикации геоданных по сравнению, например, с передачей данных по WFS (Web Feature Service)?
2) Какие существуют REST API для публикации пространственных данных, в чем их различие? На вскидку могу назвать 2 таких: MapFish Protocol, GeoServer REST API.
3) Как я понял вы реализовали REST сервис, реализующий ArcGIS Server REST API. То есть ваш продукт из той же серии, что и Papyrus и FeatureServer. Смотрели ли вы их код, может можно было бы как-то расширить функционал этого существующего ПО?

Попробовал установить. Несколько замечаний:

1) Обычно при тиражировании Python-приложений используется стандартный способ при котором пользователь не должен вручную устанавливать все необходимые пакеты вручную, а сделать просто что-то типа pip install mapfeatureserver. Может стоит поступить также иначе не очень удобно.
2) В default_settings.py жестко прописаны пути, поэтому приложение не запустится если его не отредактировать. Отредактировал значение переменных LOGFILENAME и DATA_FILES_ROOTDIR в default_settings.py, приложение запустилось.
3) Опытным путем выяснилось, что в layer.config.ini нужно вручную задать layer.ID.list с идентификаторами новых слоев, изменить PG.DSN. Из статьи не ясен формат имени файлов метаданных, например - layer.3.config.json - что такое 3 - это идентификатор из файла layer.config.ini? в метаданных указывать такой-же id?
4) На стартовой странице появилось 3 ссылки с описанием моего слоя. Первая работает нормально, вторая возвращает json с ошибкой "Data processing error: 1114", третья с информацией о таблице из БД возвращает информацию об охвате, но нижнее поле в котором, как я понимаю, должна быть информация об атрибутах - пустое, при этом вверху страницы появляется: "SQL error: u'text'". Может это как-то связано, что некоторые атрибуты моей таблицы имеют тип text?
5) Почему bootstrap и jquery тянутся из интернета? думаю имеет смысл включить их в состав приложения.

UPD.: По поводу типа text разобрался. В файле postgis.py в словаре FIELDTYPENAME2ESRI замаплены не все типы, в частности нет text и timestamp. Добавил 2 строки:

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

'text': u'esriFieldTypeString',
'timestamp': u'esriFieldTypeDate'
и третья ссылка заработала как положено.
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
vasnake
Интересующийся
Сообщения: 22
Зарегистрирован: 23 май 2013, 16:42
Репутация: 6
Откуда: Москва
Контактная информация:

Re: Mapfeatureserver как замена ArcGIS Server

Сообщение vasnake » 26 май 2013, 00:12

Denis Rykov писал(а):Спасибо за материал, очень интересно. Насколько я понимаю у вас есть опыт работы с REST-сервисами в связи с чем у меня есть ряд вопросов, которые бы хотелось прояснить и по возможности как-то отразить в статье.
...
Для начала - спасибо за суперотзыв. Я серьезно.

* ряд вопросов, которые бы хотелось прояснить и по возможности как-то отразить в статье
На всякий случай подчеркну, что статья совсем не про REST сервисы, а про средство позволяющее заменить ArcGIS Server в некоторых проектах. Кстати, дисклаймер: все мною написанное - абсолютное IMHO, ибо я много чего не знаю, но мнение имею :)

* 1) Каковы преимущества и недостатки использования REST-сервисов для публикации геоданных по сравнению, например, с передачей данных по WFS (Web Feature Service)?
По сравнению с WFS ни преимуществ ни недостатков особых у REST сервисов нет. И там и тут stateless протокол. Это в принципе.
А в кожухе - лично для меня разница в чисто прикладном аспекте, суть которого в том, что интересный нашим заказчикам вьювер на базе ArcGIS API for Silverlight может работать с АркГИС-ным REST сервисом и не может с WFS.
Кстати, чуть не забыл про базовую идею - мы хотели подружить Картобонус с WFS, но не смогли. Тогда родилась мысль сделать транслирующий сервис, переводящий WFS в ArcGIS REST и обратно.

* 2) Какие существуют REST API для публикации пространственных данных, в чем их различие? На вскидку могу назвать 2 таких: MapFish Protocol, GeoServer REST API.
Очевидно, есть еще ArcGIS Server REST API и GeoServices REST API. Насколько я знаю, кроме АркГИС-ного все остальные выглядят как очень нишевые, нераспространенные решения. Базовая функциональность у всех приблизительно одинаковая. Соответственно, о их качестве мало что известно и они мало кому интересны. Клиентов не интересуют протоколы, их интересуют красивые картинки и решение их, клиентов, частных задач. Поэтому мы зациклились на АркГИС, хотя и предпринимаем попытки соскочить.

* 3) Как я понял вы реализовали REST сервис, реализующий ArcGIS Server REST API. То есть ваш продукт из той же серии, что и Papyrus и FeatureServer. Смотрели ли вы их код, может можно было бы как-то расширить функционал этого существующего ПО?
Я не просто смотрел, я вдохновлялся ими. Насколько я понимаю, у этих продуктов нет абстракции для подключения доп.протоколов, поэтому прикрутить к ним протокол от Esri будет не проще, чем сделать свой лунапарк с блекджеком и пр. Хотя FeatureServer выглядит перспективно.
Поймите меня правильно: делая Mapfeatureserver я решаю чисто прикладную задачу - убрать из проекта ArcGIS Server и, как я вспомнил :) добавить поддержку MFS в Картобонус. Загрузка шейпов в Картобонус - в перспективе. На все остальное нет ресурсов.

* Попробовал установить. Несколько замечаний:
Огромное спасибо за подробный и развернутый отчет. В понедельник обязательно дополню и статью и readme на GitHub-е.
Было бы вообще прекрасно, если бы Вы прислали pull request на ГитХаб.
It ain't easy. It just proves how great I am.

Аватара пользователя
vasnake
Интересующийся
Сообщения: 22
Зарегистрирован: 23 май 2013, 16:42
Репутация: 6
Откуда: Москва
Контактная информация:

Re: Mapfeatureserver как замена ArcGIS Server

Сообщение vasnake » 28 май 2013, 01:31

vasnake писал(а):...
Предлагаю обсудить новую статью Mapfeatureserver как замена ArcGIS Server...
Обновил статью, дописав "Введение в тему" и внеся обещанные правки.
It ain't easy. It just proves how great I am.

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Mapfeatureserver как замена ArcGIS Server

Сообщение Denis Rykov » 28 май 2013, 04:17

Спасибо, теперь стало гораздо понятнее. А что можете сказать насчет "Data processing error: 1114", я конечно могу сам подебажить, но может вы сходу можете предположить в чем причина. Еще чисто технический вопрос: вы если я правильно понял в MFS пишете SQL-запросы вручную, а почему не используете какую-нибудь ORM, например SQLAlchemy (+GeoAlchemy), тогда бы поддержка бэкендов не ограничивалась бы одним постгресом.
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
vasnake
Интересующийся
Сообщения: 22
Зарегистрирован: 23 май 2013, 16:42
Репутация: 6
Откуда: Москва
Контактная информация:

Re: Mapfeatureserver как замена ArcGIS Server

Сообщение vasnake » 28 май 2013, 13:47

Denis Rykov писал(а):...А что можете сказать насчет "Data processing error: 1114"
... пишете SQL-запросы вручную, а почему не используете какую-нибудь ORM, например SQLAlchemy (+GeoAlchemy), тогда бы поддержка бэкендов не ограничивалась бы одним постгресом.
* С ошибками предполагается поступать так: в окне, где запущен mapfs_controller.py есть текст Traceback-а, его надо скопировать и показать мне. 50/50 этого будет достаточно, чтобы понять источник проблемы.

* ORM это здорово, но пока проект не вырос из детских штанишек, я предпочитаю код как можно более простой и минималистичный. А вообще было бы разумно, наверное, делать MFS поверх GeoDjango - и специалистов по Django много и развитая админка "из коробки" и ORM уже в движке.
It ain't easy. It just proves how great I am.

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Mapfeatureserver как замена ArcGIS Server

Сообщение Denis Rykov » 28 май 2013, 23:26

Похоже, что в словаре TYPECODE2ESRI отсутствует ключ 1114:

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

Traceback (most recent call last):
  File "mapfs_controller.py", line 166, in layerOperations
    resp = layerdata.layerData(lyrconf, ds, op)
  File "/home/rykov/projects/mapfeatureserver/mapfeatureserver/wsgi/layerdata.py", line 65, in layerData
    res = layerDataInBox(datasource.cursor, lyrconf, outSR, inpBox)
  File "/home/rykov/projects/mapfeatureserver/mapfeatureserver/wsgi/layerdata.py", line 123, in layerDataInBox
    fields = postgis.attrFieldsFromDescr(cur, lyrinfo)
  File "/home/rykov/projects/mapfeatureserver/mapfeatureserver/wsgi/postgis.py", line 291, in attrFieldsFromDescr
    fld = fieldFromDescr(col, lyrinfo.oidfield)
  File "/home/rykov/projects/mapfeatureserver/mapfeatureserver/wsgi/postgis.py", line 265, in fieldFromDescr
    ftype = TYPECODE2ESRI[col.type_code]
KeyError: 1114
Когда-то читал про админку для Flask-а тут.
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
vasnake
Интересующийся
Сообщения: 22
Зарегистрирован: 23 май 2013, 16:42
Репутация: 6
Откуда: Москва
Контактная информация:

Re: Mapfeatureserver как замена ArcGIS Server

Сообщение vasnake » 29 май 2013, 01:55

Denis Rykov писал(а):Похоже, что в словаре TYPECODE2ESRI отсутствует ключ 1114:
Спасибо за тестирование :)
Я понял, это тот же самый таймштамп, которого в моих данных не было, поэтому и в тесты не попало.
Field type 'timestamp without time zone' = code 1114 = esriFieldTypeDate
Код поправил, см.на ГитХабе.
It ain't easy. It just proves how great I am.

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Mapfeatureserver как замена ArcGIS Server

Сообщение Denis Rykov » 29 май 2013, 17:06

А есть какой-то список с кодами этих типов, чтобы их сразу все скопом добавить? У меня опять ошибка, в этот раз KeyError: 36050.
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
vasnake
Интересующийся
Сообщения: 22
Зарегистрирован: 23 май 2013, 16:42
Репутация: 6
Откуда: Москва
Контактная информация:

Re: Mapfeatureserver как замена ArcGIS Server

Сообщение vasnake » 29 май 2013, 17:57

Denis Rykov писал(а):А есть какой-то список с кодами этих типов, чтобы их сразу все скопом добавить? У меня опять ошибка, в этот раз KeyError: 36050.
Конечно, список есть http://www.postgresql.org/docs/9.0/static/datatype.html
что должно отображаться в список http://resources.arcgis.com/en/help/arc ... 037p000000

Но, IMHO, забивать и тестировать полный список маппингов - работа для бешеной собаки, которой 7 верст не крюк :)

Сегодня я оттестил text и timestamp. Запулил в ГитХаб только что.

Может будет проще, если Вы мне пришлете образцы своих данных в формате дампа Postgres? Структура таблицы и две-три характерные записи - будет достаточно.
Тогда я смогу не просто добавить маппинги, но и оттестировать. Тестировать нужно, ибо прямолинейные маппинги получаются не всегда, есть тонкости и хитрости.
It ain't easy. It just proves how great I am.

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Mapfeatureserver как замена ArcGIS Server

Сообщение Denis Rykov » 30 май 2013, 08:18

Можете сами подключиться к базе:

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

PG.DSN: host=gis-lab.info port=5432 dbname=geodetdom user=guest password=guest connect_timeout=10 client_encoding=utf8
Spatial is now, more than ever, just another column- The Geometry Column.

Ответить

Вернуться в «Материалы сайта»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 15 гостей