Mapfeatureserver как замена ArcGIS Server: различия между версиями
Vasnake (обсуждение | вклад) Нет описания правки |
Vasnake (обсуждение | вклад) Нет описания правки |
||
Строка 2: | Строка 2: | ||
{{Аннотация|Описание веб-сервиса Mapfeatureserver как замены ArcGIS Server}} | {{Аннотация|Описание веб-сервиса Mapfeatureserver как замены ArcGIS Server}} | ||
[https://github.com/vasnake/mapfeatureserver Mapfeatureserver] (далее MFS) - это веб-сервис, написанный на Python (WSGI, Flask) реализующий REST API | [https://github.com/vasnake/mapfeatureserver Mapfeatureserver] (далее MFS) - это веб-сервис, написанный на Python (WSGI, Flask) и реализующий [http://resources.arcgis.com/en/help/rest/apiref/index.html?overview.html ArcGIS Server REST API] для слоев типа [http://resources.arcgis.com/en/help/rest/apiref/fslayer.html Feature Layer]. MFS был задуман как средство, позволяющее избавиться от дорогостоящего ArcGIS Server при работе с веб-картами, использующими [http://resources.arcgis.com/content/web/web-apis ArcGIS API]. | ||
Mapfeatureserver будет полезен разработчикам ГИС решений для веб и интранет, поскольку позволяет получить веб-карты красивые и функциональные как в ArcGIS, но без затрат на приобретение ArcGIS Server. | Mapfeatureserver будет полезен разработчикам ГИС решений для веб и интранет, поскольку позволяет получить веб-карты красивые и функциональные как в ArcGIS, но без затрат на приобретение ArcGIS Server. | ||
Строка 8: | Строка 8: | ||
== Что это, Mapfeatureserver? == | == Что это, Mapfeatureserver? == | ||
Как я уже упомянул, MFS это open source программа на Python, которая после запуска создает веб-сервис отвечающий спецификации ArcGIS REST API для картографических слоев типа Feature Layer. Веб модуль MFS написан с использованием фреймворка Flask и отвечает спецификации WSGI, что позволяет использовать MFS в качестве части более крупных веб-решений. | Как я уже упомянул, MFS это open source программа на Python, которая после запуска создает веб-сервис отвечающий спецификации [http://resources.arcgis.com/en/help/rest/apiref/index.html?overview.html ArcGIS Server REST API] для картографических слоев типа [http://resources.arcgis.com/en/help/rest/apiref/fslayer.html Feature Layer]. Веб модуль MFS написан с использованием фреймворка Flask и отвечает спецификации WSGI, что позволяет использовать MFS в качестве части более крупных веб-решений. | ||
Геоданные MFS считывает из PostGIS, что означает необходимость а) загрузить данные предполагаемого решения в БД PostGIS; б) обеспечить доступ к этой БД сервису MFS. На текущий момент кроме PostGIS другие БД не поддерживаются, но есть планы добавить поддержку MySQL и MongoDB. | Геоданные MFS считывает из PostGIS DB, что означает необходимость а) загрузить данные предполагаемого решения в БД PostGIS; б) обеспечить доступ к этой БД сервису MFS. На текущий момент, кроме PostGIS, другие БД не поддерживаются, но есть планы добавить поддержку MySQL и MongoDB. | ||
Общая картина использования MFS выглядит примерно так. | Общая картина использования MFS выглядит примерно так. | ||
Строка 16: | Строка 16: | ||
* Для каждого слоя данных вписываем сведения в конфигурационные файлы MFS. | * Для каждого слоя данных вписываем сведения в конфигурационные файлы MFS. | ||
* Запускаем веб-сервис. | * Запускаем веб-сервис. | ||
* В клиентской программе, к примеру Картобонус, добавляем к карте слои | * В клиентской программе, к примеру [http://www.allgis.org/cartobonus/help/ Картобонус], добавляем к карте слои точно так же, как обычные FeatureLayer из ArcGIS Server. | ||
Теперь о недостатках и ограничениях MFS. | Теперь о недостатках и ограничениях MFS. | ||
Строка 22: | Строка 22: | ||
На текущий момент программа находится в стадии «Proof of Concept», то есть обладает функциональностью минимально достаточной для демонстрации работоспособности подхода. | На текущий момент программа находится в стадии «Proof of Concept», то есть обладает функциональностью минимально достаточной для демонстрации работоспособности подхода. | ||
Из всего многообразия запросов декларированных в API, наш сервис пока реализует два: | Из всего многообразия запросов декларированных в API, наш сервис пока реализует два: | ||
* layer metadata <pre>http://<featureservice-url>/<layerId></pre> | * [http://resources.arcgis.com/en/help/rest/apiref/fslayer.html layer metadata] <pre>http://<featureservice-url>/<layerId></pre> | ||
* layer data query by box <pre>http://<featurelayer-url>/query</pre> | * [http://resources.arcgis.com/en/help/rest/apiref/fsquery.html layer data query] by box <pre>http://<featurelayer-url>/query</pre> | ||
причем запрос данных может быть только одного типа - запрос на выборку по ограничивающему боксу (box). | причем запрос данных может быть только одного типа - запрос на выборку по ограничивающему боксу (box). | ||
Этого достаточно, чтобы загрузить слой в карту и делать zoom, pan, просмотр атрибутов для features, но и только. | Этого достаточно, чтобы загрузить слой в карту и делать zoom, pan, просмотр атрибутов для features, но и только. | ||
Строка 34: | Строка 34: | ||
Чтобы запустить сервис MFS вам понадобится выполнить следующие шаги: | Чтобы запустить сервис MFS вам понадобится выполнить следующие шаги: | ||
* Скачать MFS с GitHub. | * Скачать [https://github.com/vasnake/mapfeatureserver MFS с GitHub]. | ||
* Установить Python 2.7 и необходимые библиотки, к примеру для MS Windows | * Установить Python 2.7 и необходимые библиотки, к примеру для MS Windows | ||
<pre>set path=%path%;c:\d\Python27;c:\d\Python27\Scripts | <pre>set path=%path%;c:\d\Python27;c:\d\Python27\Scripts | ||
Строка 52: | Строка 52: | ||
pushd c:\t\shpdir | pushd c:\t\shpdir | ||
shp2pgsql.exe -d -I -s 4326 -W cp1251 flyzone.shp mfsdata.flyzone > flyzone.dump.sql | shp2pgsql.exe -d -I -s 4326 -W cp1251 flyzone.shp mfsdata.flyzone > flyzone.dump.sql | ||
psql -f flyzone.dump.sql postgisdb mfs<pre> | psql -f flyzone.dump.sql postgisdb mfs</pre> | ||
* Записать сведения о слое в конфигурационный файл | * Записать сведения о слое в конфигурационный файл | ||
<pre>mapfeatureserver\config\layers.config.ini</pre> | <pre>mapfeatureserver\config\layers.config.ini</pre> | ||
Строка 62: | Строка 62: | ||
для помощи в составлении файла метаданных. | для помощи в составлении файла метаданных. | ||
После выполнения этих шагов, можно использовать слои MFS как обычные слои ArcGIS Feature Layer в веб-картах построенных на ArcGIS web API. К примеру, есть вьювер Картобонус, построенный на ArcGIS API for Silverlight, именно он использовался для тестирования MFS. | После выполнения этих шагов, можно использовать слои MFS как обычные слои ArcGIS Feature Layer в веб-картах построенных на ArcGIS web API. К примеру, есть вьювер [http://www.allgis.org/cartobonus/help/ Картобонус], построенный на [http://resources.arcgis.com/en/help/silverlight-viewer/concepts/ ArcGIS API for Silverlight], именно он использовался для тестирования MFS. Чтобы добавить слой в карту, используйте URL вида <pre>http://hostname:5000/<layer id></pre> | ||
Чтобы добавить слой в карту, используйте URL вида <pre>http://hostname:5000/<layer id></pre> | [[Файл:Слои Mapfeatureserver в веб-картах Картобонус.png|мини|центр|750|Рабочий скриншот]] | ||
Как видите, за исключением файла метаданных, всё достаточно просто. | |||
Теперь у нас есть свободный и бесплатный сервер Feature Layer-ов для обеспечения работы любого картографического софта, использующего спецификации ArcGIS REST API. | |||
См. также | |||
* [http://vasnake.blogspot.ru/2013/05/mapfeatureserver-poc.html Статья в блоге автора] | |||
* [https://github.com/vasnake/mapfeatureserver MFS на GitHub] | |||
* [http://www.allgis.org/cartobonus/help/ web map viewer Cartobonus] | |||
E-mail: [mailto:vasnake@gmail.com vasnake@gmail.com] |
Версия от 23:39, 23 мая 2013
Описание веб-сервиса Mapfeatureserver как замены ArcGIS Server
Mapfeatureserver (далее MFS) - это веб-сервис, написанный на Python (WSGI, Flask) и реализующий ArcGIS Server REST API для слоев типа Feature Layer. MFS был задуман как средство, позволяющее избавиться от дорогостоящего ArcGIS Server при работе с веб-картами, использующими ArcGIS API.
Mapfeatureserver будет полезен разработчикам ГИС решений для веб и интранет, поскольку позволяет получить веб-карты красивые и функциональные как в ArcGIS, но без затрат на приобретение ArcGIS Server.
Что это, Mapfeatureserver?
Как я уже упомянул, MFS это open source программа на Python, которая после запуска создает веб-сервис отвечающий спецификации ArcGIS Server REST API для картографических слоев типа Feature Layer. Веб модуль MFS написан с использованием фреймворка Flask и отвечает спецификации WSGI, что позволяет использовать MFS в качестве части более крупных веб-решений.
Геоданные MFS считывает из PostGIS DB, что означает необходимость а) загрузить данные предполагаемого решения в БД PostGIS; б) обеспечить доступ к этой БД сервису MFS. На текущий момент, кроме PostGIS, другие БД не поддерживаются, но есть планы добавить поддержку MySQL и MongoDB.
Общая картина использования MFS выглядит примерно так.
- Геоданные (шейп-файлы, к примеру) загружаем в PostGIS.
- Для каждого слоя данных вписываем сведения в конфигурационные файлы MFS.
- Запускаем веб-сервис.
- В клиентской программе, к примеру Картобонус, добавляем к карте слои точно так же, как обычные FeatureLayer из ArcGIS Server.
Теперь о недостатках и ограничениях MFS.
На текущий момент программа находится в стадии «Proof of Concept», то есть обладает функциональностью минимально достаточной для демонстрации работоспособности подхода. Из всего многообразия запросов декларированных в API, наш сервис пока реализует два:
- layer metadata
http://<featureservice-url>/<layerId>
- layer data query by box
http://<featurelayer-url>/query
причем запрос данных может быть только одного типа - запрос на выборку по ограничивающему боксу (box). Этого достаточно, чтобы загрузить слой в карту и делать zoom, pan, просмотр атрибутов для features, но и только.
Остальная часть API будет реализована несколько позже. Хорошая новость заключается в том, что проект - open source и любой, кто обладает соответствующими навыками, может ускорить реализацию недостающих функций.
Инструкция по использованию Mapfeatureserver
Изложенная здесь информация может устареть к тому времени как вы читаете этот текст. Наиболее свежую информацию о проекте вы всегда можете найти на странице проекта в GitHub https://github.com/vasnake/mapfeatureserver
Чтобы запустить сервис MFS вам понадобится выполнить следующие шаги:
- Скачать MFS с GitHub.
- Установить Python 2.7 и необходимые библиотки, к примеру для MS Windows
set path=%path%;c:\d\Python27;c:\d\Python27\Scripts pip install Flask flask-login blinker psycopg2 simplejson
- Запустить приложение Flask
pushd mapfeatureserver\wsgi python mapfs_controller.py
URL веб-службы будет таким http://localhost:5000/ Если вы откроете эту страницу в браузере вы увидите служебную страницу со ссылками на тестовые слои. Эти ссылки работать не будут, так как у вас нет таких слоев. Удалить лишнее и добавить свое вы можете поправив файл
mapfeatureserver\wsgi\templates\servlets.html
Чтобы создать новый слой, вам нужно выполнить следующие шаги:
- Получить доступ к БД PostGIS, к примеру, установив БД на свой хост.
- Загрузить шейп-файл с нужными данными в БД, к примеру так:
set path=%path%;c:\Program Files\PostgreSQL\9.0\bin pushd c:\t\shpdir shp2pgsql.exe -d -I -s 4326 -W cp1251 flyzone.shp mfsdata.flyzone > flyzone.dump.sql psql -f flyzone.dump.sql postgisdb mfs
- Записать сведения о слое в конфигурационный файл
mapfeatureserver\config\layers.config.ini
находящиеся там примеры и комментарии помогут не ошибиться.
- Создать файл метаданных для слоя. Это самая трудная часть.
mapfeatureserver\config\layer.<layer id>.config.json
Чтобы было легче, можно скопировать метаданные из аналогичного существующего слоя ArcGIS и внести в него правки. Метаданные слоя из ArcGIS доступны по URL типа
http://testags/arcgis/rest/services/flyzone/FeatureServer/2?f=pjson
Также, в MFS есть специальные страницы, типа
http://localhost:5000/admin/dsn/flyzone?oidfield=gid&geomfield=geom
для помощи в составлении файла метаданных.
После выполнения этих шагов, можно использовать слои MFS как обычные слои ArcGIS Feature Layer в веб-картах построенных на ArcGIS web API. К примеру, есть вьювер Картобонус, построенный на ArcGIS API for Silverlight, именно он использовался для тестирования MFS. Чтобы добавить слой в карту, используйте URL вида
http://hostname:5000/<layer id>
Как видите, за исключением файла метаданных, всё достаточно просто. Теперь у нас есть свободный и бесплатный сервер Feature Layer-ов для обеспечения работы любого картографического софта, использующего спецификации ArcGIS REST API.
См. также
E-mail: vasnake@gmail.com