Chiffre inexact avec la géographie Sql

Je suis en train de convertir geoFences en instance de géographie Sql. Le problème est actuellement pour une certaine instance. La figure de la géographie est assez bizarre et inexacte.

Le premier (zone verte) est une geofence valide et le second est créé en sql.

C'est la geofence valide

C'est l'instance de géographie Sql

Les coordonnées sont: –

Long Lat

51.576004 24.125605, 51.580467 24.122041, 51.585875 24.119730, 51.591239 24.118751, 51.597633 24.120043, 51.603470 24.123843, 51.607161 24.126114, 51.609950 24.126976, 51.616087 24.127133, 51.625915 24.125997, 51.639776 24.119691, 51.576004 24.125605

Avec écart soit tampon de 100 mètres.

Le code Sql: –

geography::STGeomFromText('POLYGON((51.576004 24.125605, 51.580467 24.122041,51.585875 24.11973,51.591239 24.118751,51.597633 24.120043,51.60347 24.123843,51.607161 24.126114,51.60995 24.126976,51.616087 24.127133,51.625915 24.125997,51.639776 24.119691,51.576004 24.125605))', 4120).MakeValid().STBuffer(100) 

Un polygone est une boucle fermée. Cela signifie que votre clôture devrait être un anneau autour de la route. Dans ce cas, vous avez une ligne suivant la route, puis répétez le premier point, à savoir

 POLYGON((51.576004 24.125605, ... ,51.576004 24.125605)) 

Si vous changez cela en LINESTRING

 geography::STGeomFromText('LINESTRING(51.576004 24.125605, 51.580467 24.122041,51.585875 24.11973,51.591239 24.118751,51.597633 24.120043,51.60347 24.123843,51.607161 24.126114,51.60995 24.126976,51.616087 24.127133,51.625915 24.125997,51.639776 24.119691,51.576004 24.125605)', 4120) 

Ça ressemble à ça

Chaîne de lignes

Ce qui devrait expliquer la forme que vous obtenez à la fin.

Pour get le résultat que vous voulez, vous pouvez convertir en une ligne, supprimer le dernier point, puis appliquer votre tampon.

 geography::STGeomFromText('LINESTRING(51.576004 24.125605, 51.580467 24.122041,51.585875 24.11973,51.591239 24.118751,51.597633 24.120043,51.60347 24.123843,51.607161 24.126114,51.60995 24.126976,51.616087 24.127133,51.625915 24.125997,51.639776 24.119691)', 4120).STBuffer(100) 

Linestring Buffered