Я создаю веб-карту с помощью Leaflet , и я хочу иметь возможность получать слои объектов с нашего ArcServer. Я успешно смог получить класс объектов как JSON, но объекты Esri JSON не соответствуют стандартам GeoJSON, поэтому их нельзя отобразить.
Кто-нибудь знает сценарий преобразования или инструмент, который обрабатывает это?
Если нет, я планирую создать скрипт для преобразования объектов ArcServer JSON в GeoJSON.
arcgis-server
json
geojson
leaflet
дубильщик
источник
источник
Ответы:
OGR:
Эта команда будет читать результат запроса непосредственно из URL. Вы также можете предоставить ему текстовый файл, содержащий ваш JSON, или вы можете напрямую указать закодированный JSON в командной строке. Конечно, вы можете использовать привязки ORG Python, чтобы автоматизировать его в скрипте, если это необходимо, или библиотеку, чтобы сделать это в коде.
Для тех, кто любит веб-сервисы, см. Ogre веб-клиент ogr2ogr, который может конвертировать json в geojson и обратно, а также geojson в shapefile.
Ссылка: http://www.gdal.org/drv_geojson.html
источник
Вы также можете увидеть gerijson-utils Esri на Github, который «содержит утилиты [javascript] для преобразования GeoJSON в другие географические форматы json и наоборот. В настоящее время разработан только GeoJSON в Esri JSON. Кроме того, обратите внимание, что только геометрии в системе координат WGS84 поддерживаются. "
источник
geojson-utils
устарело. См. Arcgis-to-geojson-utils или терраформерESRI JSON в GeoJSON (для OpenLayers) * Вероятно, будет изменен для JavaScript Leaflet
источник: http://mapbutcher.com/blog/?p=62
источник
ArcGIS теперь поддерживает GeoJSON
Теперь ArcGIS Online имеет GeoJSON через URL ArcGIS Rest API. Все, что вам нужно сделать, это установить
f=geojson
в URL и настроить сервис. Имейте в виду, что по умолчанию ArcGIS online не разрешит экспорт GeoJSON, пока вы явно не разрешите другие форматы вывода.Вот как включить экспорт:
На странице запроса вы должны увидеть выпадающий список выходного формата с опцией GeoJSON. Старый назывался
json
.источник
Листовка и векторный слой ArGIS.
https://github.com/JasonSanford/leaflet-vector-layers
Рабочая демка. http://geojason.info/leaflet-vector-layers/demos/arcgis-server/
Больше на Leaflet и ArcGIS.
Вы можете получить этот форк, который поддерживает ArcGIS server.
https://github.com/dtsagile/Leaflet/
http://blog.davebouwman.com/2011/08/04/leaflet-lean-mean-javascript-maps/
ArcGIS Image Services и буклет http://blog.geomusings.com/2012/04/17/arcgis-image-services-and-leaflet/
источник
Я создал расширение объекта сервера для генерации GeoJSON из картографических сервисов ArcGIS Server. Это было проверено с 10.1 и 10.2, но не ранее. https://github.com/geobabbler/AGSOpenFormats
источник
Для одноразового преобразования я бы использовал принятый ответ от @Sasa Ivetic, но мне нужно было что-то в режиме реального времени, и Terraformer работал прилично для этого. К сожалению, по умолчанию это только для отдельных функций, поэтому для нескольких функций вам нужно пройтись по массиву и добавить идентификатор для каждой функции:
Это работало нормально для меня, за исключением многоугольников (то есть Аляски и ее островов), но я новичок в этом, так что возможно я что-то неправильно кодировал!
источник
Преобразование ArcGIS JSON в GeoJSON есть в чистом браузере
Есть 2 способа, которыми вы можете сделать
1) ТЕРРАФОРМЕР
Примечание: использование в node.js и использование в браузере различны , подробности см. По ссылке
2) Esri / arcgis-to-geojson-utils
использование в браузере, ArcgisToGeojsonUtils - это глобальная переменная ссылка на точку входа этого модуля
});
Тем не менее, если вы хотите связать самостоятельно, просто для обучения, следуйте инструкциям
а) Вам нужно скомпилировать весь исходный файл модуля в единый пакет.js
rollup.js установить
затем перейдите в корневую папку js lib, найдите js-файл точки входа, в данном случае это index.js
Вы должны найти новый файл bundle.js в вашем корневом каталоге.
Теперь в вашем браузере HTML-файл, включите этот файл bundle.js
Вы можете использовать его сейчас
Помните, esri_arcgis_to_geojson - это имя, которое вы назвали lib
Это становится именем глобальной переменной, доступной в браузере.
Хитрость в том, что процесс связывания добавляет мгновенную функцию реализации, например (function xx {}), вот верхняя часть из bundle.js
ArcGIS к GeoJSON-утилитами
источник
Его обычно * довольно легко конвертировать.
Я сделал скрипт https://github.com/calvinmetcalf/esri2geo, и есть другие, которые тоже работают хорошо.
* Исключение составляют многокомпонентные полигоны с отверстиями, которые не преобразуются 1-в-1 без некоторой геообработки.
источник
Если это однократный запрос и у вас нет более 1000 объектов, попробуйте вставить его в qgis с помощью добавления векторного слоя - выберите протокол и замените этот оставшийся URL-адрес arcgis своим: http://geodata.epa.gov/arcgis / rest / services / OAR / USEPA_NEI_2005 / MapServer / 1 / query? where = objectid +% 3D + objectid & outfields = * & f = json ... Предполагается, что у вас установлен gdal 1.10
источник
Возможно, еще проще, вы можете использовать библиотеку Esri-leaflet, чтобы добавить ее в виде слоя в Leaflet.
источник
Если все, что вам нужно, это вернуть Сервис ArcServer в качестве GeoJSON для использования в любой технологии картографии, которую вы хотите, я настоятельно рекомендую вам взглянуть на этот диалог о проблеме GitHub .
Я не собираюсь повторять здесь диалог, потому что это потратит время. Ваши варианты четко изложены там прямо от Esri.
источник
ArcGIS Server Rest API, сервис объектов,
если вы запрашиваете слой, с URL-адресом, как этот, ... / FeatureServer / query? layerDefs = ...
Вы не можете установить формат geojson, f = pgeojson будет неверным запросом, f = json, потому что возвращаемый материал не является функцией, слои json были возвращены.
Попробуйте эту страницу запроса HTML, вы можете увидеть, без опции Geojson,
Если вы хотите вернуть geojson (функция), вы должны использовать этот URL ... / FeatureServer / 0 / query ...
/ 0 / означает layerID, если on имеет только 1 уровень, то layerID = 0 .....
Попробуйте эту страницу запроса html, вы можете видеть, что geojson - это опция, потому что вы запрашиваете определенный слой с layerID = 0
Примечание: не забудьте установить эти 2 параметра: outSR = 4326 & f = geojson в идентификаторе пространственной ссылки URL, srid = 4326, поскольку все веб-карты используют это, f означает формат, и f = pgeojson и f = geojson работают. Если вы не установите outSR = 4326, то по умолчанию api rest сервера Arcgis НЕ будет использовать 4326, вместо этого будет использоваться что-то другое, только 4326 имеет единичный градус, который используется в большинстве веб-карт. Другой формат не будет работать с веб-картами.
Кстати, для тех, кто хочет использовать ArcGIS Server Rest API с сервисом плитки,
Tilestream и другие
/zoom(z)/x/y.png
Служба тайлов ArcGIS Server: нет png, x и y в другом порядке
http://services3.arcgis.com/your_token/ArcGIS/rest/services/Parcels/MapServer/tile/12/1641/706
источник