Mapfeatureserver как замена ArcGIS Server
- vasnake
- Интересующийся
- Сообщения: 22
- Зарегистрирован: 23 май 2013, 16:42
- Репутация: 6
- Откуда: Москва
- Контактная информация:
Mapfeatureserver как замена ArcGIS Server
Всем привет.
Предлагаю обсудить новую статью Mapfeatureserver как замена ArcGIS Server.
Статья рассказывает о новом программном проекте, позволяющем делать веб-карты такие же как на ArcGIS но без ArcGIS.
По правилам публикации полагается обсудить статью на форуме. Приступим?
Предлагаю обсудить новую статью Mapfeatureserver как замена ArcGIS Server.
Статья рассказывает о новом программном проекте, позволяющем делать веб-карты такие же как на ArcGIS но без ArcGIS.
По правилам публикации полагается обсудить статью на форуме. Приступим?
It ain't easy. It just proves how great I am.
-
- Гуру
- Сообщения: 977
- Зарегистрирован: 27 янв 2009, 22:57
- Репутация: 258
Re: Mapfeatureserver как замена ArcGIS Server
А Картобонус планируете выложить на https://github.com? В текущем варианте получается ружье без патронов. Т.е. клиентская часть доступна только через ваш хостинг?
В Картобонус нет загрузки шейп-файлов? Планируете?
В статье многовато слов про ArcGIS.
В Картобонус нет загрузки шейп-файлов? Планируете?
В статье многовато слов про ArcGIS.
- vasnake
- Интересующийся
- Сообщения: 22
- Зарегистрирован: 23 май 2013, 16:42
- Репутация: 6
- Откуда: Москва
- Контактная информация:
Re: Mapfeatureserver как замена ArcGIS Server
* Картобонус на ГитХаб: да, мысль такая есть. Проблема в том, что там много работы надо провести по чистке кода, в то время как сам по себе Картобонус это просто расширение стандартного ArcGIS Viewer for Silverlight. В общем, если народу будет надо, выложим на ГитХаб.bim2010 писал(а):А Картобонус планируете выложить на https://github.com?
В текущем варианте получается ружье без патронов.
В Картобонус нет загрузки шейп-файлов? Планируете?
В статье многовато слов про ArcGIS.
* Ружье без патронов: не согласен. Помимо Картобонуса (бесплатного и доступного), есть пачка доступных решений от Esri, в статье я дал на них ссылку. Может имеет смысл осветить этот вопрос подробнее в статье?
* Загрузка шейп-файлов в Картобонус: совсем не по теме, но отвечу - чтобы реализовать такую функциональность нужен сервер, тогда как Картобонус исключительно клиентская часть для веб-ГИС. Собственно, пожелание "грузить шейпы" было одним из мотивов создания Mapfeatureserver. Получается ответ такой: при достаточном спросе на такую фунцию, мы сделаем связку Картобонус+MFS такую, чтобы можно было грузить шейпы. Но вопрос этот сильно не простой - авторизация пользователей, личные кабинеты, дисковые квоты - это серьезно.
* в статье многовато про АркГИС: согласен. Посмотрю, что можно сделать. Хотя, сколько слов "АркГИС" допустимо в статье про решение на платформе АркГИС?
It ain't easy. It just proves how great I am.
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9129
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Mapfeatureserver как замена ArcGIS Server
1. ArcGIS Server REST API это тоже самое что активно обсуждаемый в данный момент GeoServices REST API? Если да, стоит упомянуть, дать ссылку на OGC.
2. "для слоев типа Feature Layer" - стоит расписать, слои в формате ABC я понимаю, а тип Feature Layer честно говоря нет.
А вообще я правильно понял, что у вас получилась та самая открытая reference implementation стандарта на отсутствие которой сетуют критики GeoServices REST API?
2. "для слоев типа Feature Layer" - стоит расписать, слои в формате ABC я понимаю, а тип Feature Layer честно говоря нет.
А вообще я правильно понял, что у вас получилась та самая открытая reference implementation стандарта на отсутствие которой сетуют критики GeoServices REST API?
пристегивайтесь, турбулентность прямо по курсу
- vasnake
- Интересующийся
- Сообщения: 22
- Зарегистрирован: 23 май 2013, 16:42
- Репутация: 6
- Откуда: Москва
- Контактная информация:
Re: Mapfeatureserver как замена ArcGIS Server
* ArcGIS Server REST API это тоже самое что активно обсуждаемый в данный момент GeoServices REST API?Максим Дубинин писал(а): 1. ArcGIS Server REST API это тоже самое что активно обсуждаемый в данный момент GeoServices REST API?...
2. "для слоев типа Feature Layer" - стоит расписать...
А вообще я правильно понял, что у вас получилась та самая открытая reference implementation стандарта...
Точно не знаю. При поверхностном сравнении двух стандартов я разницы не нашел. Житейский опыт подсказывает, что хотя бы небольшое расхождение должно быть, как обычно в таких случаях. Лично я реализовывал требования спецификаций именно 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
Спасибо за материал, очень интересно. Насколько я понимаю у вас есть опыт работы с 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 строки: и третья ссылка заработала как положено.
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
Для начала - спасибо за суперотзыв. Я серьезно.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 писал(а):...
Предлагаю обсудить новую статью 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
Спасибо, теперь стало гораздо понятнее. А что можете сказать насчет "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
* С ошибками предполагается поступать так: в окне, где запущен mapfs_controller.py есть текст Traceback-а, его надо скопировать и показать мне. 50/50 этого будет достаточно, чтобы понять источник проблемы.Denis Rykov писал(а):...А что можете сказать насчет "Data processing error: 1114"
... пишете SQL-запросы вручную, а почему не используете какую-нибудь ORM, например SQLAlchemy (+GeoAlchemy), тогда бы поддержка бэкендов не ограничивалась бы одним постгресом.
* 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
Похоже, что в словаре TYPECODE2ESRI отсутствует ключ 1114:
Когда-то читал про админку для Flask-а тут.
Код: Выделить всё
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
Spatial is now, more than ever, just another column- The Geometry Column.
- vasnake
- Интересующийся
- Сообщения: 22
- Зарегистрирован: 23 май 2013, 16:42
- Репутация: 6
- Откуда: Москва
- Контактная информация:
Re: Mapfeatureserver как замена ArcGIS Server
Спасибо за тестирование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
А есть какой-то список с кодами этих типов, чтобы их сразу все скопом добавить? У меня опять ошибка, в этот раз 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
Конечно, список есть http://www.postgresql.org/docs/9.0/static/datatype.htmlDenis Rykov писал(а):А есть какой-то список с кодами этих типов, чтобы их сразу все скопом добавить? У меня опять ошибка, в этот раз KeyError: 36050.
что должно отображаться в список 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
Можете сами подключиться к базе:
Код: Выделить всё
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.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей