Нет расчетов LOD. Преобразование набора пространственных данных в табличный формат с помощью JavaScript. Полные фрагменты кода включены.
В последние годы Tableau неизменно является одним из лучших инструментов для анализа данных благодаря высокой степени внедрения на рынке. Без сомнения, одной из заметных причин его коммерческого успеха является его универсальность для беспрепятственной интеграции широкого спектра форматов данных для пользователей.

Например, обширное меню выбора данных Tableau включает параметр под названием "Пространственный файл", где указанные типы файлов обычно отображаются на информационных панелях в виде визуализаций карты. Классическим примером этого может быть коллекция признаков GeoJSON, хранящаяся в текстовом файле как объект JSON, содержащий географическую информацию.
(Примечание. Все объекты GeoJSON соответствуют приведенному ниже соглашению.)
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {...},
"properties": {...}
}
]
}
Несмотря на то, что Tableau может читать наборы картографических данных, явным ограничением будет его неспособность отображать несколько типов объектов Geometry из одного источника пространственных данных —
PolygonMultiPolygonPointMultiPointLineStringMultiLineStringGeometryCollection.
Вместо этого пользователи Tableau обычно сталкиваются с приведенным ниже сообщением об ошибке:

Вариант использования: геопространственная визуализация железной дороги в стране, Сингапур
Примечание. Для последующей демонстрации должен использоваться тот же самый файл GeoJSON, который вызвал указанную выше ошибку.
Исходные источники данных:
[1]Получено из master-plan-2019-rail-line-layer (Uploaded 2020) и доступно 6 июня 2022 г., которое доступно в соответствии с условиями Singapore Open Data License
[2] Получено из master-plan-2019-rail-station-layer (Uploaded 2020) и доступно 6 июня 2022 г., которое доступно в соответствии с условиями Singapore Open Data License
Детали реализации
По сути, чтобы обойти вышеупомянутую проблему, альтернативным подходом будет ввод геопространственной информации в Tableau в виде отдельных записей (т. е. табличного формата) вместо исходного формата.
Импорт записей строк в Tableau не только устранит любые похожие или связанные ошибки, но также эффективно прочитает и отобразит их так, как предполагалось.
(Обратите внимание, что в этой статье в качестве формата табличных данных следует выбрать JSON на основе строк. Другие табличные форматы, такие как форматы Excel или CSV, также подойдут.)
Всего в процесс преобразования данных входит 2 шага.
Шаг 1. Извлеките все вложенные объекты Geometry
Как упоминалось ранее, существуют различные типы объектов Geometry — Polygon MultiPolygon Point MultiPoint LineString MultiLineString GeometryCollection
Следовательно, основная цель этого шага — разбить детализацию этих вложенных геометрий так, чтобы в объекте GeoJSON присутствовали только Polygon Point LineString. Фрагмент кода JavaScript для этого выглядит следующим образом (uncombineGeometriesInFeatureCollection(geojsonObj)):
К сведению: исходный файл необработанных данных GeoJSON можно получить из sg-rail-layer-uncombined.geojson.
Шаг 2. Преобразуйте все объекты признаков в массив объектов
После этого фрагмент кода JavaScript ниже transformFeatureCollectionToRowJSONObj(inputGeojsonObj) выполняет итерацию по каждому объекту функции и создает соответствующие записи строк:
Объяснение:
- Поле
F_IDдобавляется к каждому объекту, чтобы идентифицировать его «родительский объект» как отдельные записи строк. - Следовательно, каждый объект, который не был объединен (например, MultiPolygon в Polygon), помечается полем
F_SUBIDкак его индивидуальный идентификатор при чтении в Tableau. - Каждый объект Geometry содержит массив координат с разной степенью глубины (зависит от типа Geometry).
- Следовательно, каждая пара координат должна быть выведена в виде одной записи строки, чтобы ее можно было правильно интерпретировать в табличном формате (1 пара координат = 1 запись строки).
- Для каждого объекта функции поля в объекте
propertiesв дополнение к 6 другим полям —F_IDF_SUBIDGeometry TypePT_ORDERXYгенерируются и выводятся как объект JSON для каждой пары координат.
var obj = {
"F_ID":0, // Parent feature ID
"F_SUBID":0, // Nested Geometry ID (before being unmerged)
"Geometry Type":"", // Point,Polygon or LineString
"PT_ORDER":0, // Position in array of Geometry Coordinates
"X": 0, // longitude
"Y": 0 // latitude
};
var rowObj = {
...JSON.parse(JSON.stringify( <properties obj> )), // deep copy
...obj
};
После успешного выполнения кода результирующий вывод должен представлять собой массив rowObj, который затем можно сохранить в отдельном файле с расширением .json.
Доказательство концепции — демонстрация выходных данных Tableau
Чтобы проверить правильность преобразования пространственных данных, в меню выбора данных Tableau импортируйте файл как "JSON-файл":

После размещения каждого измерения, как показано на снимке экрана ниже, все объекты Geometry (т. е. LineString и Point) затем приступят к отображению железнодорожных станций и сети в стране, Сингапуре:

К вашему сведению: Приведенный выше файл Tableau можно загрузить с Tableau Public по ссылке 🔗 Демонстрация смешанных типов геометрии в Tableau (лучше всего просматривать на мониторе рабочего стола/ПК)
Пожалуйста, не стесняйтесь настраивать его или использовать все фрагменты кода для своих собственных вариантов использования! 🙃
И вот оно! Большое спасибо за упорство до конца этой статьи! ❤ Надеюсь, вы нашли эту статью полезной, и не стесняйтесь следовать за мной на Medium, если вы хотите больше контента, связанного с географическими информационными системами (ГИС), аналитикой данных и веб-приложениями. Буду очень признателен — 😀
— 🌮 Пожалуйста, купи мне тако ξ(🎀˶❛◡❛)