Combien coûte 1 mètre en degrés décimaux?

11

J'utilise le testeur de FME pour sélectionner des objets de plus de 1 mètre.

Mes données sont en EPSG: 4326.

Combien coûte 1 mètre en degrés décimaux?

Z77
la source
4
Consultez les réponses à: gis.stackexchange.com/questions/2951/…
underdark
6
L'idée maîtresse du commentaire de Underdark et de la réponse de @Alex Markov est que la conversion entre la longueur et les degrés décimaux dépend ( fortement ) de l'emplacement et de l'orientation. Si votre test n'a pas besoin d'être très précis - par exemple , si 1 m est un seuil brut et que 1/2 m ou 2 m peuvent tout aussi bien le faire - et s'il n'a pas à s'appliquer dans les régions polaires, alors vous peut utiliser en toute sécurité des approximations très approximatives (et peut-être même ignorer la dépendance de l'orientation et de l'emplacement).
whuber

Réponses:

8

Bien que j'aime la réponse d'Alex - il vaut mieux reprojeter que simplement convertir des degrés décimaux en mètres avec un multiplicateur fixe - je n'aime jamais vraiment avoir à reprojeter des données d'avant en arrière si ce n'est pas nécessaire. Je suppose que vous perdrez certainement un certain degré d'exactitude / précision.

Ce que j'essaierais, c'est le transformateur ReprojectLengthCalculator . Avec cela, vous pouvez mesurer la longueur en degrés décimaux et reprojeter cette valeur d'attribut. Vous n'auriez pas besoin de reprojeter la fonction en mètres et vice-versa.

entrez la description de l'image ici

L'inconvénient ici est que je pense que cela ne fonctionnera vraiment qu'avec des lignes à 2 points et - pour une raison quelconque - vous devrez calculer l'angle de cette ligne dans le cadre de l'entrée.

Si vous reprojetez comme le suggère Alex, je vous encourage à le faire en tant que flux séparé et à fusionner la distance résultante sur les données d'origine. De cette façon, vous conservez une bonne copie (non reprojetée) de la géométrie.

Je suggère également de reprojeter vers un système de coordonnées dynamiques; _AZMED_pour mesurer des distances et _AZMEA_pour mesurer des zones. Chaque entité est effectivement convertie en son propre système de coordonnées à distance égale (surface égale), ce qui donne les meilleurs résultats.

Je pense que cela ressemblerait à quelque chose comme ceci:

entrez la description de l'image ici

Vous pouvez mettre le testeur après le FeatureMerger, mais je pense que cette configuration est plus efficace. Le FeatureMerger aura besoin d'un ID unique sur les fonctionnalités pour fonctionner.

Mark Ireland
la source
1
l'utilisation de GeometryExtractor avant et de GeometryReplacer après pourrait-elle produire de meilleurs résultats que FeatureMerger? Il me semble que GeometryExtractor / GeometryReplacer peut traiter entité par entité, alors que FeatureMerger chargerait toutes les entités en mémoire (deux fois dans ce cas), ai-je raison?
Alex Markov
Merci pour l'intéressant CS ( _AZMED_/ _AZMEA_)! Où est-il possible d'en savoir plus à ce sujet?
Alex Markov
Je viens de réaliser: aussi en utilisant GeometryExtractor / GeometryReplacer, nous pouvons réellement nous débarrasser du Reprojector_2transformateur ...
Alex Markov
2
La reprojection vers _AZMED_ou _AZMEA_entraîne un système de coordonnées centré sur votre entité en cours de génération. Détails généraux sur ces projections: en.wikipedia.org/wiki/Lambert_azimuthal_equal-area_projection en.wikipedia.org/wiki/Azimuthal_equidistant_projection
Raven
1
"pourrait utiliser GeometryExtractor avant et GeometryReplacer après produire de meilleurs résultats" - Peut-être. Je n'ai pas fait de comparaison. Mais il y a un impact sur les performances dans la sérialisation de données comme ça, donc ce n'est pas une chose sûre. Ce qui est certain, c'est que vous devez vraiment utiliser un AttributeRemover pour vous débarrasser de l'attribut de géométrie, s'il y a un traitement supplémentaire à venir. Sinon, vous portez des attributs très volumineux dans le reste de la traduction sans but.
Mark Ireland
2

Je peux vous proposer de faire les prochaines étapes afin d'obtenir des résultats avec une précision appropriée:

  1. Reprojetez vos données dans certains CS projetés avec des unités métriques.
  2. Calculez la longueur et utilisez le transformateur du testeur .
  3. Reprojetez vos données dans CS source (EPSG: 4326).

Cette partie du modèle devrait ressembler à:

exemple de modèle

EDIT1:

Il est également possible d'utiliser les transformateurs GeometryExtractor et GeometryReplacer. Dans ce cas, nous ne modifierons pas du tout la géométrie de l'entité et nous pouvons nous débarrasser de Reprojector_2:

exemple de modèle 2

Alex Markov
la source
Je l'ai fait avant que j'ai eu des écarts de coordonnées !!
Z77
1
Jetez un oeil à mes modifications. J'espère que ça aide! Essayez également le modèle proposé par @ Mark-Ireland
Alex Markov