2016-09-06 4 views
1

Je convertis geoFences en instance de géographie Sql. Le problème est actuellement pour une certaine instance. La figure de géographie est assez étrange et inexacte.Figure inexacte avec la géographie Sql

La première (zone verte) est une zone géographique valide et la seconde est créée en SQL.

This is the valid geofence

This is the Sql geography instance

Les coordonnées sont les suivantes: -

longue 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 un écart-à-dire la mémoire 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) 

Répondre

2

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 qui suit la route, puis répétez le premier point, à savoir

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

Si vous changez à un 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) 

Il ressemble à ce

Linestring

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

Pour obtenir le résultat souhaité, 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) 

Buffered Linestring