Більше

Перетворення геометрії для списку об’єктів об’єктів за допомогою OpenLayers?


Я намагаюся експортувати GeoJSON для переліку об’єктів об’єктів за допомогою OpenLayers 2. Функції знаходяться в проекції EPSG: 3857, і я хотів би перетворити всі геометрії на EPSG: 4326. Я цілком здатний зробити це, переглядаючи такі функції:

var construccionFeatures = layerCONSTRUCCION.features; for (var i = 0; i 

Я просто хотів би знати, чи є швидше рішення. Чи можна за один прийом безпосередньо перетворити всі геометрії у списку? Тут швидкість є ключовою, оскільки я запускаю цей процес після події завантаження шару WFS, щоб подати GeoJSON до бібліотеки OSMBuildings.


Це питання вирішилось само собою. Я перейшов на OpenLayers 3, оскільки запитував. Проекція даних та об’єктів тепер може передаватися як опція функції читання та запису класу формату GeoJSON.


Координати функції GeoJSON не відображаються на карті OpenLayers

Я намагаюся відобразити a GeoJSON багатокутник на карті. Я використовував приклад, наданий OpenLayers, з наступними даними, але відображається лише другий багатокутник:

Код, який я використовую для синтаксичного аналізу та додавання GeoJSON до карти виглядає наступним чином:

Я помітив різні види координат. У другому наборі координати представлені як [-5e6, -1e6] з е, яке я не розумію, а в першому наборі - це не працює - вони виглядають як [103.92240800000013, 21.69931].

Це можлива причина, чому мій багатокутник не відображається?


Як я динамічно завантажую дані GeoJSON, виходячи з обсягу карти, у свій шар карти OpenLayers 3.5.0?

Я переходжу з OpenLayers 3.2.0 на 3.5.0 і маю проблеми із завантаженням даних GeoJSON у мій векторний шар. У мене це працює, але я перетворюю геометрію об’єктів з мого джерела даних GeoJSON, перш ніж додавати їх до свого векторного джерела.

Чи можна змусити OpenLayers 3.5.0 застосувати перетворення автоматично?

Дані з мого джерела даних GeoJSON використовують EPSG: 4326, я вважаю, що мені потрібно перепроектувати геометрії на EPSG: 3857, щоб відобразити їх на моїй карті. Джерело даних GeoJSON містить інформацію про проекцію в своєму атрибуті crs, а в моєму векторному джерелі також встановлено проекцію. Тим не менш, геометричні елементи не трансформуються самі по собі.

Мені потрібно передати межі області видимої карти через URL-адресу своєму джерелу даних GeoJSON, я не хочу завантажувати всі дані одночасно. У мене є функція завантажувача у моєму векторному джерелі, яка отримує поточний екстент карти та створює URL-адресу для запиту.

Зразки даних з мого джерела GeoJSON доступні, вони перевіряються за допомогою лінтера, і я вважаю це обґрунтованим.

Нижче наведено поточний код, який я використовую.

Будемо вдячні за будь-яку допомогу чи вказівки у правильному напрямку. :-D


Перетворення геометрії для списку об’єктів об’єктів за допомогою OpenLayers? - Геоінформаційні системи

2D-інструменти геометрії та топології

Це невеликий набір інструментів геометрії, який я написав близько 2012 року для невеликого проекту, а також базовий візуалізатор html5. З тих пір я намагаюся підтримувати його та розширювати далі. Я знаю, що існує багато інших подібних API, які роблять абсолютно те саме, навіть у 3D.

Частина, в якій я відрізняюся, і я особливо пишаюся, - це функція removeDangles у файлі topology.js, яка для тих, хто не знайомий з цим терміном, обрізає будь-який рядок у колекції рядків, яка не бере участі в жодному потенційному перетворення рядка в багатокутник.

На жаль, я ще не написав функцію перетворення рядків у багатокутники, але маю намір це зробити.

Великі зміни в моєму житті, зміна роботи, країни. Великі зміни і для цього невеликого проекту. Я роблю це трохи більш ГІС (Географічні Інформаційні Системи -ish). Я знаю, що там багато глядачів карт, але іноді, якщо ми не робимо щось з нуля, ми не будемо рости і вчитися. Тож я зробив переглядач WMS для Canvas. На жаль, на цьому першому коміті він не працює щодо рамки для кожної системи координат, але там, сподіваюся, так буде. Також він не на 100% сумісний: P з рештою проекту, на даний момент більше нагадує автономну функцію. Перевір

Я помітив, як погано було написано деякі речі (ми зростаємо / вчимось), і зараз я все переписую, плюс додаю деякі додаткові алгоритми, які я написав тим часом, для деяких інших проектів. Також я розширюю приклади. Якщо хтось навіть віддалено зацікавлений, він / вона може приєднатися та зробити PR

будьте обережні, приклади демонструють невелику частину коду, в даний час завдяки переробці є багато речей, які не працюють

Я вирішив перенести бібліотеку для використання з OpenLayers 2.x, оскільки існувала потреба в іншому моєму проекті. Ця бібліотека насправді не підтримується, але я роблю все можливе, щоб додавати речі, коли мені це потрібно.

Малюнок.js має основні функції малювання на полотні html5 на випадок, якщо ви не хочете реалізувати свою

Приклад використання (відображення багатокутників) - оновлено 04.06.2016

  1. Я перетворив код, щоб функції більше не були глобальними. Натомість все упаковано в 4 функції закриття примітивів геометричної топології візуалізації
  2. Читати координати багатокутника як геометрії xy Array [i] =
  3. Обчисліть обмежувальну рамку var BBox = geometrical.getBoundingBox (Геометрії)
  4. Перетворення координати багатокутника в локальну систему полотна var tr = geometrical.transform (Geometries, BBox, Canvas_width, Canvas_height)
  5. Намалюйте багатокутники на рендерінгу елемента полотна. Малювання (tr (перетворені геометрії), заливка (істина / хибність), '243011' (шістнадцятковий колір без #), полотно (об'єкт полотна)) rendering.drawing (tr, false, ' 243011 ', полотно)

Методи

Вимірювання PLANAR відображають проекцію географічних даних на 2D поверхню (іншими словами, вони не враховуватимуть кривизну землі). За бажанням в якості альтернативи можуть бути обрані типи вимірювань GEODESIC, GREAT_ELLIPTIC, LOXODROME та PRESERVE_SHAPE.

  • ГЕОДЕЗИЧНИЙ - найкоротша лінія між будь-якими двома точками на земній поверхні сфероїда (еліпсоїда). Одне з використання геодезичної лінії - це коли потрібно визначити найкоротшу відстань між двома містами для шляху польоту літака. Це також відомо як велика лінія кола, якщо вона базується на кулі, а не на еліпсоїді.
  • ВЕЛИКИЙ_ЕЛІПТИЧНИЙ - Лінія на сфероїді (еліпсоїді), що визначається перетином на поверхні площиною, яка проходить через центр сфероїда та початкову та кінцеву точки відрізка. Це також відомо як велике коло, коли використовується куля.
  • ЛОКСОДРОМ - Локсодром - це не найкоротша відстань між двома точками, а натомість визначає лінію постійного несучого або азимут. Великі кругові маршрути часто розбиваються на низку локсодромів, що спрощує навігацію. Це також відомо як румб лінія.
  • ПЛАНАР - Планові вимірювання використовують двовимірну декартову математику для обчислення довжин та площ. Ця опція доступна лише при вимірюванні в проектованій системі координат, і 2D-площина цієї системи координат буде використана як основа для вимірювань.
  • PRESERVE_SHAPE — Цей тип обчислює площу або довжину геометрії на поверхні земного еліпсоїда для геометрії, визначеної в проектованій або географічній системі координат. Цей параметр зберігає форму геометрії в системі координат.

(La valeur par défaut est GEODESIC)

Valeur renvoyée

Повертає кортеж кута (у градусах) та відстані (у метрах) до іншої точки.

Valeur renvoyée

Межа багатокутника - це багатолінія. Межа полілінії є багатоточковою, що відповідає кінцевим точкам лінії. Межа точки або багатоточок - це порожня точка або багатоточка.

Відстань буфера в тих же одиницях, що і геометрія, яка буферизується.

Від’ємну відстань можна вказати лише щодо геометрії багатокутника.

Valeur renvoyée

Буферна геометрія багатокутника.

Об'єкт екстенту, який використовується для визначення екстента кліпу.

Valeur renvoyée

Вихідна геометрія, відсічена до заданого обсягу.

Valeur renvoyée

Une valeur booléenne renvoyée Справжнє індивідуальне quette cette géométrie contient la deuxième géométrie.

Valeur renvoyée

Отримана геометрія. Опукла оболонка однієї точки - це сама точка.

Valeur renvoyée

Une valeur booléenne renvoyée True indique que les deux géométries s'intersectent dans une géométrie de type de forme inférieure.

Геометрія ріжучої полілінії.

Valeur renvoyée

Тип ущільнення, ДИСТАНЦІЙНИЙ, КУТОВИЙ або ГЕОДЕЗИЧНИЙ.

  • ДИСТАНЦІЯ - Створює нову функцію, що являє собою кусочно-лінійне наближення введення.
  • ANGLE - Створює нову функцію, що представляє собою кусочно лінійне наближення вхідних даних. Вершини вводяться в точках, де кут між дотичними в цих точках є передбаченим кутом.
  • GEODESIC - Збільшує та переробляє сегменти між вхідними вершинами, так що вихідні відрізки йдуть за найкоротшим наземним шляхом, що з'єднує вхідні вершини.

Максимальна відстань між вершинами. Фактична відстань між вершинами, як правило, буде меншою за максимальну відстань, оскільки нові вершини будуть рівномірно розподілені по вихідному відрізку.

Якщо використовується тип DISTANCE або ANGLE, відстань вимірюється в одиницях просторового відліку геометрії. Якщо використовується тип GEODESIC, відстань вимірюється в метрах.

Densify використовує прямі лінії для наближення кривих. Ви використовуєте відхилення для контролю точності цього наближення. Відхилення - це максимальна відстань між новим сегментом та вихідною кривою. Чим менше його значення, тим більше сегментів буде потрібно для наближення кривої.

Якщо використовується тип DISTANCE, відхилення вимірюється в одиницях просторового відліку геометрії. Якщо використовується тип ANGLE, відхилення вимірюється в радіанах. Якщо використовується тип GEODESIC, відхилення не використовується.


Перетворення геометрії для списку об’єктів об’єктів за допомогою OpenLayers? - Геоінформаційні системи

LOD4WFS - адаптер зв’язаних відкритих даних для веб-служб (бета-версія)

Адаптер LOD4WFS (зв’язані відкриті дані для веб-служб) - це послуга, яка забезпечує доступ до пов’язаних географічних даних із геоінформаційних систем (ГІС). Він реалізує послугу, яка прослуховує запити WFS і перетворює ці запити в мову запитів SPARQL для RDF. Після обробки запиту SPARQL адаптер LOD4WFS отримує набір результатів RDF від Triple Store, кодує його як XML-документ WFS і повертає клієнту, наприклад ГІС. Цей підхід дозволяє поточному ГІС прозоро отримати доступ до географічних наборів даних LOD, використовуючи їх реалізацію WFS, без будь-яких необхідних адаптацій. З метою досягнення більшої кількості ГІС, найпоширеніша реалізація WFS в даний час прийнята для адаптера LOD4WFS, а саме Специфікація реалізації веб-функцій OGC 1.0.0. Він забезпечує основні функції, пропоновані довідковою реалізацією WFS, GeoServer.

Адаптер LOD4WFS забезпечує доступ до географічних наборів даних LOD двома різними способами: Стандартний доступ до даних (SDA) і Федеральний доступ до даних (FDA). Коротше кажучи: SDA дуже простий у використанні, але, але не дуже гнучкий. FDA трохи складніший у використанні (вам потрібно написати власні запити SPARQL), але дуже гнучкий.

Клацніть тут, щоб завантажити останні стабільні випуски.

Функція стандартного доступу до даних була розроблена для того, щоб забезпечити доступ до всіх географічних наборів даних LOD, що містяться в потрійному сховищі. Ця функція в основному працює як дослідник, шукаючи географічні набори даних LOD з певного Triple Store і роблячи їх доступними через WFS. Через можливість опису різних типів геометрій (багатокутників, ліній, точок) та безлічі різних систем відліку координат, які є характерними вимогами WFS, ми за замовчуванням вибрали словниковий запас GeoSPARQL як вимогу до введення для функції стандартного доступу до даних. Наведений нижче приклад показує, як передбачається структурувати геометрії та пов’язані з ними атрибути. Геометрії кодуються як літерали WKT, а атрибути Функцій пов'язані з екземпляром гео: Геометрія клас за допомогою схеми RDF та словників набору елементів метаданих Dublin Core. Однак немає обмежень щодо того, яким словником або властивостями можна користуватися для опису атрибутів. Повну версію набору даних натисніть тут.

Щоб зробити набори даних доступними за допомогою функції стандартного доступу до даних, до наборів даних необхідно додати додаткові метадані. Для цього ми використовуємо іменовані графіки. Кожен іменований графік у джерелі даних LOD повинен містити лише об'єкти одного типу. Цей підхід полегшує виявлення Функцій, прискорюючи запити, що містять Перелік Функцій, доступних у потрійному сховищі. У випадку, якщо Іменований графік містить кілька типів об’єктів, їх можна розділити на різні шари за допомогою об’єднаного доступу до даних (див. Наступний розділ). Нарешті, кожен іменований графік повинен описуватися певними властивостями RDF, а саме рефератом, заголовком та темою з словника основних термінів Дубліна. Ці властивості допомагають адаптеру класифікувати всі функції, доступні в потрійному сховищі, щоб їх можна було далі виявити клієнтом WFS через Документ про можливості WFS.

Федеральний доступ до даних (FDA)

Функція об’єднаного доступу до даних пропонує можливість доступу до географічних наборів даних LOD на основі попередньо визначених запитів SPARQL. На відміну від стандартного доступу до даних, функція об'єднаного доступу до даних здатна виконувати запити SPARQL для кількох кінцевих точок SPARQL, завдяки чому функції WFS можуть складатися з даних з різних джерел. Як доказ концепції того, чого можна досягти, наведений нижче запит SPARQL показує приклад об’єднаного запиту, що поєднує дані з DBpedia та Ordnance Survey з Великобританії. Запит SPARQL виконується щодо кінцевої точки SPARQL Ordnance Survey, отримуючи код GSS та географічні координати з районів Великобританії - координати надаються в Ordnance Survey з використанням словника WGS84 lat / long, але цей приклад перетворює їх на літерали WKT, функція CONCAT. Потім отримані записи фільтруються, узгоджуючи назви районів із записами DBpedia зі сходу Англії, які написані англійською мовою. Результат цього запиту SPARQL можна далі перерахувати як єдину функцію WFS через адаптер LOD4WFS, забезпечуючи тим самим рівень взаємодії між наборами даних, який в даний час неможливий за допомогою будь-якої реалізації WFS, будь то використання Shapefiles або географічних баз даних.

Налаштування вашого середовища

Щоб правильно налаштувати середовище адаптера WFS, спочатку потрібно розпочати відтворення з файлом налаштувань, який - сюрприз, сюрприз - знаходиться в папці налаштувань. Файл налаштувань розділений у наступних розділах.

Властивості, що використовуються для відображення метаданих об’єктів SDA в Документі можливостей.

title: властивість RDF для заголовка об’єктів. Значення за замовчуванням: & lthttp: //purl.org/dc/terms/title>

реферат: властивість RDF для анотації об’єктів. Значення за замовчуванням: & lthttp: //purl.org/dc/terms/abstract>

ключові слова: властивість RDF для теми об’єктів. Значення за замовчуванням: & lthttp: //purl.org/dc/terms/subject>

Предикати та класи, що використовуються для ідентифікації геометрій (сумісних з SDA) у кінцевих точках SPARQL.

Ці властивості базуються на такій схемі:

Більшість властивостей цього розділу, якщо їх не ретельно налаштувати, можуть призвести до пошкодження послуги.

Почнемо з простих.

defaultCRS: Стандартна система координат координат для закодованих геометрій. Ймовірно, вам ніколи не доведеться торкатися цієї властивості, оскільки геометрії без явного CRS слід інтерпретувати як EPSG: 4326 (WGS84). Однак, якщо ваш набір даних не відповідає стандартам, тут ви можете його змінити.

sdaPrefix: префікс, що використовується для функцій SDA, відображається в документах WFS. Значення за замовчуванням: sda.

fdaPrefix: префікс, що використовується для функцій FDA, відображається в документах WFS. Значення за замовчуванням: fda.

solrPrefix: префікс, що використовується для функцій SOLR, відображається в документах WFS. Значення за замовчуванням: solr.

sdaEnabled: властивість увімкнути або вимкнути використання функцій SDA. Оскільки функції SDA чітко покладаються на певну схему даних, вона в більшості випадків не застосовується. Тому він за замовчуванням вимкнений. Значення за замовчуванням: false.

fdaEnabled: властивість увімкнути або вимкнути використання функцій FDA. Значення за замовчуванням: true.

solrEnabled: Властивість, щоб увімкнути або вимкнути використання функцій SOLR. Значення за замовчуванням: false.

Тут є критичні властивості, тому, якщо ви насправді не знаєте, що робите, просто не чіпайте їх. Ці властивості пов'язані із типовими літералами RDF за замовчуванням та просторами імен, що використовуються додатком, і які відповідають чинним стандартам.

defaultLiteral: У випадку, якщо тип літералу не вказаний, передбачається визначений тут тип. Значення за замовчуванням: & lthttp: //www.w3.org/2001/XMLSchema#string>

stringLiteral: Рядковий тип літералу. Значення за замовчуванням: & lthttp: //www.w3.org/2001/XMLSchema#string>

integerLiteral: цілочисельний тип літералу. Значення за замовчуванням: & lthttp: //www.w3.org/2001/XMLSchema#int>

decimalLiteral: десятковий літеральний тип. Значення за замовчуванням: & lthttp: //www.w3.org/2001/XMLSchema#decimal>

longLiteral: довгий літеральний тип. Значення за замовчуванням: & lthttp: //www.w3.org/2001/XMLSchema#long>

dateLiteral: Тип літералу дати. Значення за замовчуванням: & lthttp: //www.w3.org/2001/XMLSchema#date>

floatLiteral: тип плаваючого літералу. Значення за замовчуванням: & lthttp: //www.w3.org/2001/XMLSchema#float>

serviceName: Служба, що використовується на запитах HTTP, наприклад http: // localhost: 8088 / lod4wfs / wfs /? service = wfs & ampversion = 1.0.0 & amprequest = GetCapabilities. Значення за замовчуванням: lod4wfs

defaultPort: Порт, через який служба прослуховуватиме запити. Значення за замовчуванням: 8088.

SPARQLEndpointURL: адреса кінцевої точки SPARQL, де розташовані функції SDA.

SPARQLDirectory: Каталог, де будуть зберігатися запити щодо функцій FDA. Значення за замовчуванням: особливості /

connectionTimeOut: час очікування підключення (у мілісекундах) для даної Кінцевої точки SPARQL. Встановлення тайм-ауту запобігає тому, що запити чекатимуть вічно у випадку несправності сервера або проблем з мережею. Мені здається, ти більше схожий "без ризику, без задоволення", просто встановіть для властивості 0. Значення за замовчуванням: 1000.

[PreviewLimit]: максимальна кількість записів, що відображаються під час попереднього перегляду веб-інтерфейсу. Значення за замовчуванням: 10

Після належного налаштування файлу налаштувань ви готові до запуску адаптера LOD4WFS. Додаток стискається в одному файлі jar lod4wfs_releasex.x.jar, розташованому в кореневому каталозі, і його можна запустити за допомогою такої команди:

Примітка: Параметр -Xmx резервує обсяг простору купи, необхідний для програми. Отже, якщо ви маєте справу з великими геометріями, може знадобитися збільшити простір купи, наприклад -Хмх5г. Оскільки це повністю залежить від розміру геометрії, оптимального розміру купи не існує. Для кращого технічного обслуговування рекомендується створити службу у вашій операційній системі для управління процесом, створеним за допомогою вищезазначеної команди.

Якщо ви розробник і хочете запустити службу безпосередньо з вашої IDE, просто запустіть метод main () класу de.ifgi.lod4wfs.web.Start. Якщо ви нічого не пропустили, ви вже побачите на своєму пульті такі вітання:


WPS, Turf.js та обробка просторових даних в Інтернеті

Як FOSS, так і власне програмне забезпечення ГІС пропонують функції обробки просторових даних, такі як буфер, об'єднання, контур, інтерполяція тощо. Ви використовували деякі з них за допомогою QGIS та GDAL на попередніх уроках. Але що, якби ви хотіли дозволити людям запускати ці функції з веб-браузера? Наприклад, припустимо, ви хотіли дозволити користувачам вашої веб-карти намалювати багатокутник, а потім побачити розрахунок загальної кількості населення та кількості медичних клінік у цьому полігоні. Ви зможете ознайомити ГІС із багатьма людьми, не потребуючи встановлення будь-якого програмного забезпечення ГІС.

OGC випустила специфікацію для виклику обробки просторових даних через веб-сервіси. Це називається специфікацією служби веб-обробки (WPS). Як і інші послуги OGC, про які ви дізналися, він пропонує набір операцій, за якими ви можете зателефонувати. Це: GetCapabilities, DescribeProcess та Execute. Звичайно, операція «Виконати» - це та, яка запускає запит фактично виконати обробку. Сервер виконує роботу з обробки даних і надсилання результату у відповідь. GML може використовуватися для передачі інформації про векторні функції або в запиті, або у відповіді.

Як вам, мабуть, відомо про запуск інструментів GDAL та ArcToolbox, функції обробки просторових даних іноді можуть вимагати багатьох вхідних параметрів. Наприклад, буферний процес може зажадати від вас вказати ширину буфера, чи буде він застосований до обох сторін об’єкта, чи слід обмежувати кінці чи округляти тощо. Кожен інструмент має власний набір параметрів та синтаксис для їх опису. Оскільки входи можуть бути настільки довгими та складними (особливо якщо включена геометрія), іноді ви можете помістити входи у свій власний XML-файл та розмістити їх на сервері, а не вставляти всі параметри в URL-адресу як запит GET, як ви бачив із WMS та WFS на попередніх уроках. Деякі сервери та браузери встановлюють обмеження на тривалість запиту HTTP GET, тоді як запити HTTP POST зазвичай можуть бути набагато довшими.

Сама специфікація WPS не говорить, які типи операцій обробки просторових даних повинен підтримувати WPS, це залежить від того, хто створює та адмініструє послугу. Є сотні потенційних операцій, які можна включити. Коли ви вперше використовуєте WPS, ви можете викликати операцію GetCapabilities, щоб з'ясувати, які процеси доступні.

WPS-сервери

GeoServer пропонує розширення WPS, яке розкриває набір просторових процесів із набору топологій FOSS JTS, а також деякі інші процеси, розроблені спеціально GeoServer. Ми не будемо встановлювати це розширення в цьому курсі, але я закликаю вас переглянути в документації, якщо ви вважаєте, що можете використовувати його на своєму робочому місці чи в інших навчальних роботах.

Zoo Open WPS Platform та PyWPS - це ще один приклад реалізації FOSS WPS. У власній сфері Esri ArcGIS Server може обслуговувати WPS із моделі ModelBuilder, яку ви створюєте за допомогою інструментів ArcToolbox або сценаріїв.

Клієнти WPS

Доступно кілька клієнтів WPS на основі графічного інтерфейсу, які дозволяють вибирати інструменти та вводити їх параметри в текстові поля або випадаючі списки. QGIS має плагін WPS, який працює таким чином, що дозволяє вам викликати WPS з робочого столу.

Що стосується виклику WPS безпосередньо з веб-програми, деякі API веб-карт пропонують допоміжні класи або бібліотеки, які можуть вам допомогти. Листівка - не одна з таких (я доберусь до неї за хвилину). OpenLayers підтримує WPS завдяки використанню OpenLayers.WPSClient. Коли ви створюєте екземпляр цього об’єкта, ви вказуєте URL-адресу сервера WPS. Потім ви налаштовуєте об’єкти JavaScript, що містять усі параметри процесу, який ви хочете викликати. Нарешті, ви виконуєте процес і вказуєте, що слід робити з результатами. Дивіться цей приклад розробника OpenLayers, доступний в Інтернеті.

Навіть коли ви використовуєте плагін, бібліотеку або об'єкт WPS-клієнта, вам все одно потрібно бути ознайомленим із процесом та його документацією, щоб ви могли надати правильний синтаксис параметрів. Одна помилка в синтаксисі може зірвати всю операцію з обробки. Крім того, WPS-сервери та клієнти часто знаходяться або на ранніх стадіях, або в зрілому віці, або призначені для досвідчених користувачів, яким комфортно через відсутність графічного інтерфейсу та великої документації.

Turf.js як альтернатива WPS

Багато операцій просторової обробки є досить поширеними, і веб-розробники ГІС дуже прагнуть застосувати їх без накладних витрат на WPS. Бібліотека Turf.js набула популярності завдяки можливості геообробки безпосередньо на векторах GeoJSON в середовищі JavaScript. Іншими словами, Turf відрізняється від WPS, оскільки клієнтська машина запускає код обробки, а не сервер. Turf був розроблений на Mapbox, але його можна безкоштовно використовувати та модифікувати під відкритою ліцензією MIT. Операції, доступні через Turf.js, включають розчинення, об'єднання, перетинання, буферизацію, агрегування, обчислення центроїдів тощо.

Ви можете завантажити Turf.js на свою машину або отримати доступ до нього через CDN. Оскільки Turf.js працює на GeoJSON, він дуже добре підходить до Leaflet. Більшість рясних прикладів розробників Turf.js показані за допомогою API Mapbox (зі зрозумілих причин), але спосіб, яким ви їх викликали б з Leaflet, по суті однаковий. Наприклад, такий фрагмент наведено в покроковому керівництві з аналізу Turf.js:

У цій ситуації обома параметрами функції turf.neests () є об'єкти GeoJSON: один представляє будівлю бібліотеки, а інший - набір лікарняних будівель. Функція знаходить лікарню, що знаходиться найближче до натиснутої бібліотеки, і повертає її як GeoJSON. По суті, неважливо, який API ви використовуєте для відображення вихідних даних GeoJSON.

Міркування щодо продуктивності

Перш ніж впроваджувати будь-яку обробку просторових даних в Інтернеті, розгляньте способи попередньої обробки даних, щоб усунути необхідність проведення обчислень на льоту. Коли ви викликаєте просторову обробку в Інтернеті, це робить ваш сервер зайнятим і збільшує час очікування кінцевого користувача. У наведеному вище прикладі, можливо, найближча лікарня до кожної бібліотеки може бути попередньо розрахована в середовищі ГІС на робочому столі та збережена в таблиці атрибутів бібліотеки. Тоді коду просто потрібно буде прочитати атрибут, а не виконувати обробку.

Бувають деякі ситуації, коли попередній розрахунок не має сенсу через широкий діапазон параметрів аналізу та можливостей, які ви хочете виставити (наприклад, якщо існувало 20 різних типів функцій, які ви хотіли дозволити людям знаходити біля бібліотеки, або якщо особа могла ввести адресу якоїсь бібліотеки, не в оригінальному наборі даних), тому рішення про те, чи дозволити просторову обробку в режимі реального часу, повинно прийматися в кожному конкретному випадку.

Впровадження обробки просторових даних у терміновому проекті

Якщо у вас вже не було попереднього впливу WPS, я не рекомендую включати його у ваш термін проекту, враховуючи короткий проміжок часу, який залишається в курсі. Реалізація Turf.js була б кращою для обсягу термінового проекту, оскільки його можна реалізувати досить швидко з меншим кодом.

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


Класи просторових даних у sp пакет

На початку і в середині 1990-х років ми, хто викладав курси просторового аналізу, окрім прямого застосування географічних інформаційних систем (ГІС), виявили обмеженість програмного забезпечення. В установах, які фінансують ліцензії на сайти для ГІС, можна було писати або ділитися сценаріями для Arc / Info (в AML), ArcView (на проспекті) або пізніше у Visual Basic для ArcGIS. Якщо ліцензії на сайти та пов’язані з ними ключки Примітка 1, що використовуються на місцях, були проблемою (включаючи проблеми для студентів, які беруть участь у польових роботах у дослідницьких проектах), альтернатив було небагато, але можливості обговорювались у списках розсилки. Одним з них був список AI-Geostats listserve / mailing list, започаткований Грегуаром Дюбуа в 1995 р. AI означав Arc / Info. Інша спільнота, яка зібралася навколо GRASS GIS та її переходу на розробку з відкритим кодом, серед якої було розміщено, зокрема, дерева каталогів src.contrib та src.garden з інструментами аналізу (див. Код, що зберігається на https://github.com/OSGeo/grass -репозитарій).

З кінця 1996 р. Мова програмування R та середовище стали розглядатися як альтернатива викладання та досліджень, що включають просторовий аналіз, кількома людьми, включаючи автора та Альбрехта Гебхардта. R використовує більшу частину синтаксису S, який тоді комерційно доступний як S-Plus, але був і залишається вільним для встановлення, використання та розширення відповідно до Загальної публічної ліцензії GNU (GPL). Крім того, його можна встановити портативно в декількох операційних системах, включаючи Windows та Apple Mac OS. Приблизно в той же час був опублікований модуль S-Plus SpatialStats (Калузний та ін., 1998), і в Лестері відбулася зустріч, у якій взяли участь багато з тих, хто шукає рішення. (Мій внесок був опублікований у спеціальному випуску зборів Bivand 1998).

Значну частину перенесення коду S на R для просторової статистики розпочав Альбрехт Гебхардт, як тільки механізм пакету R дозрів. Функція бібліотеки () була модернізована в R 0,60, опублікованому в грудні 1997 року, а Комплексна мережа архівів R працювала в січні 1998 року. Обмін між Альбрехтом Гебхардтом і Томасом Ламлі в списку розсилки R-beta (https: //stat.ethz .ch / pipermail / r-help / 1997-листопад / 001882.html) показує, що механізм пакунків ще не працював передбачувано до 0.60 для внесених пакетів. Оскільки вчителям, які перекладали курси з S на R, потрібен був доступ до раніше використовуваних S-бібліотек, перенесення було важливим кроком. Показані списки CRAN трипак (Ренка та Гебхардт 2020) та акіма (Akima та Gebhardt 2020) - як з ліцензіями, що не мають відкритого коду - доступні з серпня 1998 року, перенесені Альбрехтом Гебхардтом зола і геостат (Majure and Gebhardt 2016) послідували в квітні 1999 року просторові пакет був доступний як частина МАСА (програмне забезпечення, що підтримує чотири видання Venables та Ripley 2002), також частково перенесене Альбрехтом Гебхардтом. У найраніший період адміністратори CRAN допомагали практично з перенесенням та публікацією. Ми з Альбрехтом представили огляд можливостей використання R для досліджень та викладання в просторовому аналізі та статистиці в серпні 1998 р., Опублікованому згодом у цьому журналі під назвою Bivand and Gebhardt (2000).

Роулінгсон і Дігл (1993) описують версію S-PLUS splancs (Rowlingson and Diggle 2017) для аналізу точкових зразків. Я зв’язався з Баррі Роулінгсоном у 1997 році, але лише просунувся вперед із перенесенням, коли пакувальний механізм R дозрів. У вересні 1998 року я написав йому: "Зовсім не складно було запустити речі, що, на мою думку, є результатом вашого кодування, дякую!" Однак я додав цю спекуляцію: "Питання, над яким я трохи замислювався, полягає в тому, чи не буде на якомусь етапі Альбрехт інтегрувати чи узгоджувати точки та об'єкти пар у splancs, просторові і геостат—Оні не однакові, але для користувачів, можливо, вони повинні виглядати такими ». Це занепокоєння представництвом класів щодо географічних даних виявилось плідним.

Подальшим кроком було з'єднання GRASS та R, описаних у Bivand (2000), та подальших зустрічей на декількох зустрічах та тісному співпраці з Markus Neteler. Інтерфейс еволюціонував, і його поточний статус представлений Lovelace et al. (2019, глава 9). Наслідком цієї роботи стало те, що команда CRAN запропонувала мені відвідати зустріч у Відні на початку 2001 року, щоб поговорити про інтерфейс GRASS GIS. The meeting gave unique insights into the dynamics of R development, and very valuable contacts. Later the same year Luc Anselin and Serge Rey asked me to take part in a workshop in Santa Barbara, which again led to many fruitful new contacts my talk eventually appeared as Bivand (2006), but the contacts made at the workshop were very useful. Further progress during the intervening 4 years in the use of R in spatial econometrics was reported in Bivand (2002), building on Bivand and Gebhardt (2000), but preceding the release of the spdep package.

During the second half of 2002, it seemed relevant to propose a spatial statistics paper session at the next Vienna meeting to be held in March 2003 (known as Distributed Statistical Computing (DSC) and led to useR! meetings), together with a workshop to discuss classes for spatial data. I had reached out to Edzer Pebesma as an author of the stand-alone open-source program gstat (Pebesma and Wesseling 1998) it turned out that he had just been approached to wrap the program for S-Plus. He saw the potential of the workshop immediately, and in November 2002 wrote in an email: “I wonder whether I should start writing S classes. I’m afraid I should”. Virgilio Gómez-Rubio had been developing two spatial packages, RArcInfo (Gómez-Rubio and López-Quílez 2005 Gómez-Rubio 2011) and DCluster (Gómez-Rubio et al. 2005, 2015), and was committed to participating. Although he could not get to the workshop, Nicholas Lewin-Koh wrote in March 2003 that: “I was looking over all the DSC material, especially the spatial stuff. I did notice, after looking through peoples’ packages that there is a lot of duplication of effort. My suggestion is that we set up a repository for spatial packages similar to the Bioconductor mode, where we have a base spatial package that has S-4-based methods and classes that are efficient and general.” Straight after the workshop, a collaborative repository for the development of software using SourceForge was established, and the R-sig-geo mailing list (still with over 3600 subscribers) was created to facilitate interaction.

So the mandate for the development of the sp package emerged in discussions between interested contributors before, during and especially following the 2003 Vienna workshop most of us met at Pörtschach am Wörthersee in October 2003 at a meeting organized by Albrecht Gebhardt. Coding meetings were organized by Barry Rowlingson in Lancaster in November 2004 and by Virgilio Gómez-Rubio in Valencia in May 2005, at both of which the class definitions and implementations were stress-tested and often changed radically the package was first published on CRAN in April 2005. The underlying model adopted was for S4 (new style) classes to be used, for "Spatial" objects, whether raster or vector, to behave like "data.frame" objects, and for visualization methods to make it easy to show the objects. Package developers could choose whether they would use sp classes and methods directly, or rather use those classes for functionality that they did not provide themselves. spatstat package (Baddeley and Turner 2005 Baddeley et al. 2015, 2020) was an early example of such object conversion (known as coercion in S and R) to and from sp classes and classes, with the coercion methods published in the maptools package (Bivand and Lewin-Koh 2020).

Reading and writing ESRI Shapefiles had been possible using the maptools package (Bivand and Lewin-Koh 2020) available from CRAN since August 2003, but rgdal, on CRAN from November 2003, interfacing the external GDAL library (Warmerdam 2008) and first written by Tim Keitt, initially only supported accessing and reading raster data. Further code contributions by Barry Rowlingson for handling projections using the external PROJ.4 library and the vector drivers in the then OGR part of GDAL were folded into rgdal, permitting reading vector and raster data into sp-objects and writing from sp-objects. For vector data, it became possible to project coordinates, and in addition to transform them where datum specifications were available. Until 2019, the interfaces to GDAL and PROJ had been relatively stable, and upstream changes had not led to breaking changes for users of packages using sp classes or rgdal functionalities, although they have involved significant maintenance effort. The final part of the framework for spatial vector data handling was the addition of the rgeos package interfacing the external GEOS library in 2011, thanks to Colin Rundell’s 2010 Google Summer of Coding project. rgeos package provided vector topological predicates and operations typically found in GIS such as intersection note that by this time, both GDAL and GEOS used the Simple Features vector representation internally.

Wordclouds of CRAN and BioConductor package dependencies, August 2020, left panel: cluster 6 (pagerank range 0.002196–0.000070), right panel: cluster 2 (pagerank range 0.022419–0.000390, sf = 0.000972)

By the publication of Bivand et al. (2008), a few packages not written or maintained by the book authors and their nearest collaborators had begun to use sp classes. By the publication of the second edition (Bivand et al. 2013), we had seen that the number of packages depending on sp, importing from and suggesting it (in CRAN terminology for levels of dependency) had grown strongly. In late 2014, de Vries (2014) looked at CRAN package clusters from a page rank graph and found a clear spatial cluster that we had not expected. Figure 1 shows word clouds with character sizes proportional to pagerank scores for two clusters found in August 2020 among the cumulated packages held on CRAN and those published by the Bioconductor project. The left panel shows cluster 6, the spatial cluster with sp having a pagerank of 0.002196, while the right panel shows cluster 2, which is dominated by packages developed by RStudio, a commercial company. sf package is in cluster 2, with a pagerank score of 0.000972, most likely in that cluster because it itself uses many of the functionalities of RStudio packages. The two word clouds are scaled by the largest pagerank of included packages, so the scales differ by almost an order of magnitude.


Spatial Databases


Spatial Databases is the first unified, in-depth treatment of special techniques for dealing with spatial data, particularly in the field of geographic information systems (GIS). This book surveys various techniques, such as spatial data models, algorithms, and indexing methods, developed to address specific features of spatial data that are not adequately handled by mainstream DBMS technology.


The book also reviews commercial solutions to geographic data handling: ArcInfo, ArcView, and Smallworld GISs and two extensions to the relational model, PostgreSQL and Oracle Spatial. The authors examine these underlying GIS technologies, assess their strengths and weaknesses, and consider specific uses for which each product is best suited.


Spatial Databases is the first unified, in-depth treatment of special techniques for dealing with spatial data, particularly in the field of geographic information systems (GIS). This book surveys various techniques, such as spatial data models, algorithms, and indexing methods, developed to address specific features of spatial data that are not adequately handled by mainstream DBMS technology.


The book also reviews commercial solutions to geographic data handling: ArcInfo, ArcView, and Smallworld GISs and two extensions to the relational model, PostgreSQL and Oracle Spatial. The authors examine these underlying GIS technologies, assess their strengths and weaknesses, and consider specific uses for which each product is best suited.

Key Features

* Examines the strengths of various query languages and approaches to query processing.
* Explains the use of computational geometry in spatial databases GISs, providing necessary background and an in-depth look at key algorithms.
* Covers spatial access methods, including the R-tree and several space-driven structures, and is filled with dozens of helpful illustrations.

* Examines the strengths of various query languages and approaches to query processing.
* Explains the use of computational geometry in spatial databases GISs, providing necessary background and an in-depth look at key algorithms.
* Covers spatial access methods, including the R-tree and several space-driven structures, and is filled with dozens of helpful illustrations.


Critical GIS .com

I've constructed this bibliography as a set of key readings, organized as a chronology, that I feel traces the various genealogies of contemporary 'critical GIS'. This is, of course, a work in progress, and I'll look forward to comments/feedback/questions!

See also the following bibliographies:
on literary geography and mapping by Sheila Hones and James Kneale,
on code/space by Sam Kinsley.

Key Moments in Early 'GIS' Development

Dobson, Jerome E. 1983. Automated Geography. The Professional Geographer 35 (2):135-143.

Couclelis, Helen. 1992. People manipulate objects (but cultivate fields): Beyond the raster-vector debate in GIS. Lecture Notes in Computer Science 639:65-77.

Goodchild, Michael F. 1987. A spatial analytical perspective on geographical information systems. International Journal of Geographical Information Systems 1 (4):327-334.

Nyerges, Timothy L. 1989. Schema integration analysis for the development of GIS databases. International Journal of Geographic Information Systems 3 (2):153-183.

Nyerges, Timothy L. 1991. Geographic information abstractions: conceptual clarity for geographic modeling. Environment and Planning A 23:1483-1499.

Steinitz, Carl, Paul Parker, and Lawrie Jordan. 1976. Hand-Drawn Overlays: Their History and Prospective Uses. Landscape Architecture:444-455.

Tobler, Waldo R. 1959. Automation and Cartography. Geographical Review 49 (4):526-534.


Перегляньте відео: Створення програмних обєктів (Жовтень 2021).