Запросите OSM для всех пляжей, выходящих на запад? - QGIS предпочтительнее

17

Я хочу идентифицировать все пляжи на этой планете (или определенное ее подмножество), которые обращены на запад (+/- 20-30 градусов).

Моя идея заключается в использовании OSM в качестве источника данных. Извлечение всех полигонов, имеющих тег «natural = beach», дает мне набор данных / шейп-файл всех областей, которые помечены как пляжи. Все идет нормально.

Я также знаю, что могу использовать данные береговой линии (например, из OSM или Natural Earth), чтобы определить облик пляжей.

Буферизация пляжных фигур для исправления незначительных несоответствий и пересечение их с береговой линией должны предоставить мне данные о том, какая сторона фигуры обращена к воде. Использование значений max / min всех пересекающихся точек должно дать мне представление об азимуте. (90 градусов +/- 20-30 градусов было бы хорошо ...)

И вот где я потерялся ...

Моим предпочтительным инструментом будет QGIS, но PostGIS тоже подойдет.

Есть кто-нибудь вокруг с умной идеей, как решить эту загадку?

JDoe
источник
4
Вместо того, чтобы использовать буферы ... Разве не было бы проще выяснить, как сместить все элементы в вашем шейп-файле немного на восток, а затем запустить пересечение между шейп-файлом береговой линии и шейп-файлом пляжей? Они будут пересекаться только там, где пляжи обращены на запад.
Тим Кувельер
Тим - хорошая идея. Не уверен, что это действительно будет работать для "странных" геометрий. Я получил другую идею: взять береговую линию за линии, а центроид пляжных полигонов, используя v.net в траве, привязать центроид к ближайшей линии (или в postgis). Теперь у вас есть линия, которая представляет направление. рассчитать направление от начальной точки центроида до конечной точки линии с помощью триггера. Хотя приятно, что это не полностью "внутри" QGIS. Есть еще умные идеи?
jdoe
Если вы можете найти способ превратить береговую линию в серию точечных данных, а также центроиды пляжа, вы можете попробовать Nearest Neighbor Analysis, как описано здесь: ссылка Вместо объединения атрибутов, как показано в примере, убедитесь, что у вас есть x, значения y для двух наборов данных совпадают. Используя полевой калькулятор, вы можете найти относительные различия между значениями x и y для центроида и ближайшей точки. Основываясь на знаке разности x, вы знаете, запад это или восток, и на основе отношения diff (y) / diff (x) к западу.
Тим Кувельер
Учитывая, что у меня закончились символы, вот так: если значение x центроидов> значение x береговой линии, пляж обращен на запад. координаты x и y позволят вам вычислить угол к оси y: (y2-y1) / (x2-x1) дает вам наклон линии, которую вы можете преобразовать обратно в градусы
Тим Кувельер
5
Вы можете растеризовать свои данные, установить значения для открытой воды на ноль, а для пляжей - 1, а затем запустить инструмент Terrain Analysis-> Aspect. Вы получите растр в направлении нисходящего уклона и сможете выбрать ячейки, которые являются достаточно «западными».
WxMacMan

Ответы:

1

Сервис высот в ArcGIS Online включает готовые к использованию данные по всему миру, а также встроенную растровую функцию для создания аспекта. Также довольно просто одновременно фильтровать диапазон значений сторон (290-250 градусов), а также высоту (например, от 0 до 10 метров, в зависимости от того, как вы определяете пляж - или, возможно, у вас уже определены пляжи?). Я не знаю, готовы ли вы использовать технологию ArcGIS - если да, я могу отправить вам несколько примеров запросов REST.

Прикрепленный png не отфильтрован должным образом, но показывает концепцию ...введите описание изображения здесь

Коди Б.

Benkelman
источник