Преобразование географии в геометрию SQL Server 2008R2

Здравствуйте, у меня есть следующий код в SQL Server, почему, если я хочу вычислить sTArea @geog, не удается и с @geom success?, как я могу преобразовать этот полигон из геометрии в тип данных географии, чтобы получить STArea?, спасибо вы.

DECLARE @geom geometry;
SET @geom = geometry::STGeomFromText('POLYGON ((-99.213546752929688 19.448402404785156, -99.2157974243164 19.449802398681641, -99.2127456665039 19.450002670288086, -99.213546752929688 19.448402404785156))', 4326); 
select @geom.STArea();

DECLARE @geog geography;
SET @geog = geography::STGeomFromText('POLYGON ((-99.213546752929688 19.448402404785156, -99.2157974243164 19.449802398681641, -99.2127456665039 19.450002670288086, -99.213546752929688 19.448402404785156))', 4326); 
select @geog.STArea();

1 ответ

Я немного осмотрелся, и этот ответ Как я могу преобразовать данные геометрии в данные географии в MS SQL Server 2008? который более или менее просто указывает на http://blogs.msdn.com/b/edkatibah/archive/2008/08/19/working-with-invalid-data-and-the-sql-server-2008-geography-data-type-part-1b.aspx приводит меня к разумному объяснению и рабочему коду.

Суть: сначала вы должны убедиться, что ваша геометрия может быть переведена в правильную географию.

Код (в котором, конечно, могут быть объединены некоторые операции, но они разбиты здесь для ясности.)

DECLARE @geog GEOGRAPHY;
DECLARE @geom GEOMETRY;

SET @geom = GEOMETRY::STGeomFromText('POLYGON ((-99.213546752929688 19.448402404785156, -99.2157974243164 19.449802398681641, -99.2127456665039 19.450002670288086, -99.213546752929688 19.448402404785156))', 4326); 
SET @geom = @geom.MakeValid() --Force to valid geometry
SET @geom = @geom.STUnion(@geom.STStartPoint()); --Forces the correct the geometry ring orientation
SET @geog = GEOGRAPHY::STGeomFromText(@geom.STAsText(),4326) 

SELECT @geog.STArea();

А для тех, кто не читает весь пост в блоге Spatial Ed, есть один важный совет: "Пожалуйста, имейте в виду, что этот подход наивен, поскольку он не учитывает несколько потенциальных крайних условий. Тем не менее, этот подход должен работать во многих случаях. "

Другие вопросы по тегам