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.
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
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)