Сколько стоит 1 метр в десятичных градусах?

11

Я использую тестер FME, чтобы выбрать объекты размером более 1 метра.

Мои данные в EPSG: 4326.

Сколько стоит 1 метр в десятичных градусах?

Z77
источник
4
Проверьте ответы на: gis.stackexchange.com/questions/2951/…
Подземье
6
Суть комментариев Подземья и ответа @Alex Markov заключается в том, что преобразование длины в десятичные градусы ( сильно ) зависит от местоположения и ориентации. Если ваш тест не должен быть очень точным - например , если 1 м - это грубый порог, а 1/2 м или 2 м - то же самое - и если его не нужно применять в полярных регионах, то вы можно смело использовать очень грубые приближения (и, возможно, даже игнорировать зависимость от ориентации и местоположения).
whuber

Ответы:

8

Хотя мне нравится ответ Алекса - лучше перепроектировать, чем просто конвертировать десятичные градусы в метры с фиксированным множителем - мне никогда не нравится перепроектировать данные назад и вперед, если в этом нет необходимости. Я полагаю, вы должны потерять некоторую степень точности / точности.

То, что я бы попробовал, это трансформатор ReprojectLengthCalculator . При этом вы можете измерить длину в десятичных градусах и перепроектировать значение этого атрибута. Вам не нужно перепроектировать функцию на метры и обратно.

введите описание изображения здесь

Недостатком здесь является то, что я думаю, что он действительно будет работать только с 2-точечными линиями и - по некоторым причинам - вам придется вычислять угол этой линии как часть ввода.

Если вы делаете перепроектирование, как предлагает Алекс, тогда я бы рекомендовал вам сделать это как отдельный поток и объединить полученное расстояние с исходными данными. Таким образом, вы сохраняете хорошую (не перепроектированную) копию геометрии.

Я также предлагаю перепроектировать в динамическую систему координат; _AZMED_для измерения расстояний и _AZMEA_для измерения площадей. Каждая функция эффективно конвертируется в собственную систему координат на равном расстоянии, что дает наилучшие результаты.

Я думаю, что это будет выглядеть примерно так:

введите описание изображения здесь

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

Марк Ирландия
источник
1
Может ли использование GeometryExtractor до и GeometryReplacer после получить лучшие результаты, чем FeatureMerger? Мне кажется, что GeometryExtractor / GeometryReplacer может обрабатывать объект за объектом, в то время как FeatureMerger загружает все объекты в память (дважды в этом случае), я прав?
Алекс Марков
Спасибо за интересный CS ( _AZMED_/ _AZMEA_)! Где можно узнать больше об этом?
Алексей Марков
Просто понял: также с помощью GeometryExtractor / GeometryReplacer мы действительно можем избавиться от Reprojector_2трансформатора ...
Алекс Марков
2
Перепроектирование _AZMED_или _AZMEA_создание системы координат с центром в генерируемой входной функции. Общие сведения об этих проекциях: en.wikipedia.org/wiki/Lambert_azimuthal_equal-area_projection en.wikipedia.org/wiki/Azimuthal_equidistant_projection
Ворон
1
«Можно использовать GeometryExtractor до и GeometryReplacer после, чтобы получить лучшие результаты» - возможно. Я не делал сравнения. Но при сериализации подобных данных наблюдается снижение производительности, так что это не совсем так. Не вызывает сомнений то, что вам действительно нужно использовать AttributeRemover, чтобы избавиться от атрибута геометрии, если предстоит дальнейшая обработка. В противном случае вы несете очень большие атрибуты в оставшейся части перевода без всякой цели.
Марк Ирландия
2

Я могу предложить вам сделать следующие шаги, чтобы получить результаты с соответствующей точностью:

  1. Перепроектируйте ваши данные в некоторые прогнозируемые CS с метрическими единицами.
  2. Рассчитайте длину и используйте тестер трансформатора.
  3. Перепроектируйте ваши данные обратно в исходный CS (EPSG: 4326).

Эта часть модели должна выглядеть так:

пример модели

EDIT1:

Также можно использовать преобразователи GeometryExtractor и GeometryReplacer. В этом случае мы не будем изменять геометрию объекта вообще, и мы можем избавиться от Reprojector_2:

Пример модели 2

Алекс Марков
источник
Я сделал это раньше, чем я получил некоторые расхождения в координатах!
Z77
1
Посмотрите на мои правки. Надеюсь, поможет! Также попробуйте модель, предложенную @ Mark-Ireland
Алекс Марков