Более

Получение JSON / JSONP / GeoJSON из запроса GetFeature WFS в ArcGIS for Server?


Я пытаюсь выполнить запрос GetFeature к сервису ArcGIS 10.2.1 for Server WFS и хочу получить ответ в формате GeoJSON.

Если я посмотрю на GetCapabilities из службы, единственный доступный формат вывода:

 текст / xml; subType = gml / 3.1.1 / profiles / gmlsf / 1.0.0 / 0

Возможно ли использование JSON, JSONP или GeoJSON?

Как настроить ArcGIS 10.2.1 for Server для этого?


Из вопроса неясно, спрашиваете ли вы о возможности редактирования сервиса ArcGIS, чтобы вы могли предоставить JSON, JSONP или GeoJSON как часть принадлежащего вам сервиса WFS, или спрашиваете с точки зрения пользователя, желающего использовать службу WFS.

Глядя на это с точки зрения пользователя:

В любой веб-службе OGC, будь то WMS, WFS, WCS и т. Д., Вы можете запрашивать только те форматы, которые доступны (рекламируются) в службе, через ее ответ на запрос GetCapabilities. Итак, в приведенном выше примере, если рекламируется только GML 3.1.1, вы можете сделать запрос только для этого формата.

Следует отметить, что только потому, что часть программного обеспечения может предоставлять формат, если поставщик услуг решает заблокировать этот формат, он может сделать это.


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

Запросы WMS могут выполнять следующие операции:

Операция Описание
Исключения Если возникнет исключение
GetCapabilities Получает метаданные о сервисе, включая поддерживаемые операции и параметры, а также список доступных слоев.
GetMap Получает изображение карты для указанной области и содержимого
GetFeatureInfo (необязательно) Извлекает базовые данные, включая геометрию и значения атрибутов, для местоположения пикселя на карте.
DescribeLayer (необязательно) Указывает WFS или WCS для получения дополнительной информации о слое.
GetLegendGraphic (необязательно) Получает сгенерированную легенду для карты


Вот как я это решил, все вокруг поменял.

WFS не имеет понятия уровня или масштаба масштабирования, то есть WMS, хотя поддерживает загрузку подмножества данных на основе bbox (см. Примеры WFS).

Тем не менее, это могло бы быть хорошим делом.

Это работает для GeoServer 2.6.2 с Leaflet 0.7.3. Кстати, следующие номера bbox города SF были получены с помощью собственной функции Leaflet

Ваш код выглядит нормально. Просто передайте bbox в url.

Это то, что я придумал: когда я проверяю, сколько загруженных объектов, он говорит 4000, что означает загрузку всего за пределами ограничивающей рамки.


Операции¶

Все версии WFS поддерживают следующие операции:

Создает документ метаданных, описывающий сервис WFS, предоставляемый сервером, а также действительные операции и параметры WFS.

Возвращает описание типов функций, поддерживаемых службой WFS.

Возвращает выборку объектов из источника данных, включая значения геометрии и атрибутов.

Предотвращает редактирование функции с помощью постоянной блокировки функции

Редактирует существующие типы объектов, создавая, обновляя и удаляя

Следующие операции доступны в только версия 2.0.0:

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

Возвращает набор функций, а также применяет блокировку к этим функциям.

Создать сохраненный запрос на сервере WFS

Удаляет сохраненный запрос с сервера WFS

Возвращает список сохраненных запросов на сервере WFS.

Возвращает документ метаданных, описывающий сохраненные запросы на сервере WFS.

Следующие операции доступны в только версия 1.1.0:

Извлекает функции и элементы по идентификатору из WFS

В следующих примерах для иллюстрации используется вымышленный URL http://example.com/geoserver/wfs. Чтобы проверить примеры, подставьте адрес действительной WFS. Кроме того, хотя запрос обычно определяется в одной строке без разрывов, разрывы добавляются для ясности в приведенных примерах.


Настройка карты TomTom

Теперь, когда мы поместили GeoJSON в объект JavaScript, давайте настроим карту TomTom.

Если у вас еще нет бесплатного ключа API, получите его в TomTom, прежде чем двигаться дальше.

Получив ключ, давайте инициализируем карту с помощью tt.map. Мы не будем вдаваться в подробности по этому поводу, поскольку процесс уже хорошо задокументирован.

Скопируйте приведенный ниже код JavaScript и вставьте его в тег & ltscript & gt сразу после последнего фрагмента. Не забудьте вставить свой ключ.

контейнер ссылается на ваш & ltdiv & gt с идентификатором карты.

center - это точка фокуса карты после ее рендеринга. Для краткости я вручную выбрал точку рядом с центром фигуры, хотя эти координаты можно легко вычислить.

minZoom - это значение от 0 до 22. Например, для minZoom, установленного в 0, карта будет уменьшена до исходного вида всего мира.


Запрос JSONP

Чтобы использовать этот метод, целевой домен должен поддерживать запросы JSONP.

Запрашивать JSONP из неподконтрольных вам доменов очень рискованно.

Поскольку ваш браузер загружает любой код, который возвращается в виде сценария, вам следует запрашивать JSONP только из домена, которому вы доверяете. В общем, JSONP заменяется CORS, последний намного безопаснее и должен быть вашим предпочтительным выбором, если доступны оба.

Чтобы запросить JSONP, используйте createElement (), чтобы добавить тег скрипта в заголовок документа.

Когда скрипт запускается, целевой домен передает данные в качестве аргумента в Другой скрипт, обычно называемый callback (). Целевой домен определяет имя сценария обратного вызова, которое является первым именем на странице при загрузке целевого URL-адреса в браузере.

Например, загрузите http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_week.geojsonp в окно браузера, чтобы отобразить имя обратного вызова как eqfeed_callback.

Вы должны определить сценарий обратного вызова в своем коде:

Используйте метод addGeoJson (), чтобы разместить проанализированные данные GeoJSON на карте.


Добавить слои из файлов

Вы можете добавлять слои на свою карту, импортируя данные, которые вы сохранили в текстовом файле с разделителями (.csv или .txt), файле формата обмена GPS (.gpx), файле GeoJSON (.geojson или .json) или шейп-файле (сжатый в файл .zip). Слой из файла сохраняется на карте.

При добавлении файла на карту он должен использовать Мировую геодезическую систему (WGS 84) в качестве опорной системы координат.

Если ваш CSV-файл, шейп-файл или файл GeoJSON содержит большой объем данных или вы хотите создать слой, который можно повторно использовать на нескольких картах, вы можете опубликовать размещенный векторный слой вместо добавления файла на карту.

Вы также можете добавить CSV-файл, не содержащий информации о местоположении, в Map Viewer Classic в виде таблицы. Это полезно, когда вы хотите объединить непространственные данные - например, претензии о материальном ущербе, связанные с недавним торнадо, - с пространственными данными, такими как слой почтовых индексов, с помощью инструмента анализа Объединить объекты.

  1. Выберите «Добавить слой из файла».
  2. Нажмите «Выбрать файл» и найдите файл на своем компьютере.
  3. Если вы добавляете шейп-файл, выберите обобщение функций для отображения в Интернете или сохранение исходных функций.
  4. Щелкните Импортировать слой.

Если вы добавляете файл GeoJSON, GPX или шейп-файл, ваш слой отображается на карте. Если вы добавляете текстовый файл с разделителями (CSV или TXT), перейдите к следующему шагу.

Если вы добавляете текстовый файл с разделителями (.csv или .txt) с информацией о местоположении, выберите, чтобы Map Viewer Classic находил объекты по координатам, адресам или местам по мере необходимости.

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

По умолчанию Map Viewer Classic геокодирует местоположения в зависимости от региона вашей организации. Чтобы изменить страну, которую Map Viewer Classic использует для геокодирования ваших местоположений, выберите другую страну в раскрывающемся меню Страна. Если ваш файл содержит местоположения из нескольких стран или из страны, которой нет в списке, выберите Мир.

Для геокодирования адресов требуются кредиты.

Просмотрите поля местоположения и щелкните ячейку, чтобы изменить используемое поле или поля местоположения. Если вы добавляете файл CSV с поддерживаемыми полями координат, такими как MGRS или USNG, выберите поля местоположения, которые соответствуют вашим полям координат, если они еще не выбраны.

Ваш слой добавлен на карту.

Перетащите файл

Помимо импорта файла .csv, .txt или .gpx с помощью кнопки «Добавить» в Map Viewer Classic, вы можете перетащить его со своего компьютера на карту. Map Viewer Classic обработает файл так, как если бы вы использовали команду «Добавить». Перетаскивание файлов .txt, .csv и .gpx поддерживается в браузерах Google Chrome и Mozilla Firefox.

Вы не можете перетащить шейп-файл или файл GeoJSON со своего компьютера на карту, вы должны использовать кнопку «Добавить».


Методы и параметры фильтра WFS

Введение в некоторые параметры, которые вы можете добавить в запрос Web Feature Services (WFS) для фильтрации данных на лету, методы фильтрации и инструменты, которые вы можете использовать для их выполнения.

Параметры URL

Базовый URL WFS 2.0 GetFeature для запроса данных имеет следующий синтаксис:

  • ВАШ_API_KEY - ваш ключ LDS API (войдите в LDS, чтобы создать свой ключ)
  • LAYER_ID - идентификатор набора данных LDS

Вот примеры некоторых дополнительных параметров, которые вы можете использовать для фильтрации или преобразования вашего запроса:

ПараметрОписаниеПример
считатьОграничивает количество возвращаемых функций (WFS 1.1, 2.0). Синтаксис WFS 1.0: maxfeaturescount = 4
maxfeatures = 4
SRSName Включает преобразование системы координат на летуSRSName = EPSG: 2193
(EPSG для NZTM2000)
Имя свойства Возвращает только указанные атрибуты / столбцыPropertyName = id, имя
BBOX Пространственный фильтр, который возвращает объекты, геометрия которых находится в ограничивающей рамке.BBOX = (форма, -36,764156,174,975230, -36,817467,175,023120)
Формат выводаУправляет форматом файла вашего запроса. Поддерживает json, csv и kmloutputformat = json

Полный список параметров фильтра см. По ссылкам ниже для методов фильтрации CQL и OGC.

Методы фильтрации

ECQL фильтры

CQL (Common Query Language) - это расширение, предоставляемое программным обеспечением Geoserver, которое мы используем в LDS. CQL - это базовый язык запросов, который прост и быстр для чтения и записи и очень похож на SQL.

Вот запрос WFS GetFeature с использованием фильтра CQL (обратите внимание на параметр HTTP "cql_filter"). Слой «Первичные участки Новой Зеландии» включает в себя текущие первичные участки, которые предназначены для одного из целого ряда целей, включая владение коренной землей, озеро или реку, дорогу или железную дорогу.

В этом примере мы фильтруем слой NZ Primary Parcels, чтобы возвращать только те участки, где они предназначены для использования в дороге:

Для упрощения разработки и демонстрации большинство примеров в этой документации представлены в формате CQL.

OGC фильтры

Фильтры OGC - это официальный метод фильтрации запросов WFS. Этот метод фильтрации основан на стандарте XML и позволяет создавать более сложные выражения.

Вот тот же запрос, что и выше, но с использованием фильтра OGC (обратите внимание на параметр HTTP "filter"):

Запуск вашего фильтра

Если вы используете приложение ГИС, ваше приложение, вероятно, будет иметь встроенный инструмент построения запросов, который поможет вам создавать и запускать эти расширенные фильтры WFS. Если у вас нет приложения ГИС или вы хотите выполнить запрос вне определенного приложения, вы также можете запустить следующие фильтры:

Прямо в вашем браузере

Создайте запрос вручную, например, в блокноте, а затем вставьте URL-адрес в адресную строку браузера. Используйте параметр outputformat, описанный в нашей документации по API набора изменений, чтобы указать формат файла, в котором будет возвращаться ваш запрос. Если вы не укажете формат вывода, результаты будут отображаться в вашем браузере.

Оба запроса, указанные выше, можно вставить в ваш браузер для получения результатов. Просто не забудьте заменить заполнитель YOUR_API_KEY своим собственным ключом.

Через скриптовый процесс или утилиту

Любой язык программирования, который может делать веб-запросы, может использовать WFS и применять фильтры к этим запросам. Поскольку URL-адрес WFS представляет собой просто строку текстовых символов, URL-адрес, включающий фильтр, может быть создан на лету с помощью сценария в ответ на ввод пользователя или заданную логику. В этом реальная сила WFS, поскольку она позволяет автоматизировать процессы, которые зависят от данных LDS.

Одним из примеров такого инструмента является GDAL / OGR. GDAL / OGR - это библиотека программных инструментов для преобразования и обработки данных, которая выполняет часть тяжелой работы, которую в противном случае пришлось бы кодировать вручную. Его можно запустить из командной строки или получить доступ через API для Python, C и C ++.


GetCapabilities¶

В GetCapabilities операция запрашивает метаданные об операциях, услугах и данных («возможностях»), которые предлагает сервер WMS.

Параметры операции GetCapabilities:

Параметр Необходимые? Описание
служба да Наименование услуги. Значение - WMS.
версия да Версия сервиса. Значение равно 1.0.0, 1.1.0, 1.1.1, 1.3.0.
запрос да Название операции. Ценность - GetCapabilities.

GeoServer предоставляет следующие параметры, зависящие от поставщика для операции GetCapabilities. Они полностью задокументированы в разделе параметров поставщика WMS.

Параметр Необходимые? Описание
пространство имен Нет ограничивает отклик слоями в заданном пространстве имен
формат Нет запросить документ о возможностях в определенном формате

Пример запроса GetCapabilities:

На WMS-сервер передаются три параметра: service = wms, version = 1.1.1 и request = GetCapabilities. Параметр службы сообщает серверу WMS, что ожидается запрос WMS. Параметр версии указывает, какая версия WMS запрашивается. Параметр запроса указывает операцию GetCapabilities. Стандарт WMS требует, чтобы запросы всегда включали эти три параметра. GeoServer смягчает эти требования (устанавливая версию по умолчанию, если она не указана), но для соответствия стандартам они всегда должны указываться.

Ответ представляет собой XML-документ о возможностях, который представляет собой подробное описание службы WMS. Он состоит из трех основных разделов:

обслуживание Содержит метаданные службы, такие как имя службы, ключевые слова и контактную информацию для организации, эксплуатирующей сервер.
Запрос Описывает операции, которые предоставляет служба WMS, а также параметры и форматы вывода для каждой операции. При желании GeoServer можно настроить так, чтобы отключить поддержку определенных операций WMS.
Слой Перечисляет доступные системы координат и слои. В GeoServer слои называются в форме «пространство имен: слой». Каждый уровень предоставляет метаданные службы, такие как заголовок, аннотация и ключевые слова.


15.4 Служба веб-обработки (WPS)

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

Ключевые операции, поддерживаемые WPS, следующие:

GetCapabilities - Предоставляет метаданные о службе со списком предоставленных процессов.

DescribeProcess - предоставляет подробное описание процесса с объяснением входных и выходных параметров.

Execute - служит для запуска серверного процесса с использованием входных параметров, необходимых для возврата выходных параметров.

Кроме того, если сервер предлагает асинхронные процессы, возможны три дополнительных запроса: