2009-10-07 10 views
1

Utilisation de SQL Server 2008: en supposant que j'ai un objet de géographie valide GEOG1, la convertir en une instance de géométrie geom1 (en utilisant la même SRID) et reconvertissant à une géographie d'objet geog2 ne montre aucune différence entre geog1 et geog2.Différences lorsque la conversion entre les instances géométriques et géographie

Toutefois, en raison d'un problème déjà discuté here Je ne peux pas créer un objet de géographie contenant une ligne lines à partir de mes données d'origine. Cela fonctionne avec des objets de géométrie. Toutefois, si j'effectue un MakeValid() sur la géométrie résultante, je peux créer à nouveau un objet de géographie. Le problème est que je ne sais pas si cette géographie sera très différente par rapport à la ligne originale qui n'a pas été acceptée par geography::STGeomFromText() auparavant. Surtout la longueur de l'objet (STLength()) est d'intérêt pour moi.

Est-ce que quelqu'un sait si la conversion entre les types de géographie et de géométrie est perdue et si un appel MakeValid() sur une géométrie change les données (en particulier quand il s'agit de longueur)?

Merci

Répondre

1

MakeValid(), par nécessité, modifie les données sous-jacentes d'une instance de géométrie. (S'il n'y a pas de modification, la géométrie résultante sera tout aussi invalide que l'original).

Dans de nombreux cas, le seul changement est le typede la géométrie résultante (à savoir un invalide, linestring auto-intersection peut devenir un multiligne valide), mais il est également possible de coordonner le changement de valeur. Cependant, ceux-ci ne changent que par des quantités absolument fractionnaires nécessaires pour valider la géométrie, et ne feront pas de différence significative sur la longueur.