Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

ST Съдържа колона География

Използвах кода, който написах за вас (Съхраняване на колона „Точка“ от ShapeFile ) като отправна точка, за да получите таблица с точки. Оттам:

select geography::STPolyFromText(
'POLYGON((' + 
    stuff((
        select ',' + cast(g.STPointN(t.i).Long as varchar(10)) + ' ' + cast(g.STPointN(t.i).Lat as varchar(10))
        from [a]
        cross join tally as [t]
        where t.i <= g.STNumPoints()
        order by i
        for xml path('')

    ), 1, 1, '') + '))'
    , 4326)

Този код предполага няколко неща. Първо:че вашите точки са подредени така, както бихте обиколили границата на региона. Това има значение. Помислете за пъзел за свързване на точки. За да получите правилната картина, трябва да ги направите в правилния ред. Второ, във връзка с първото, те трябва да са в правилната ориентация. Полигоните следват правилото на лявата ръка. Тоест, ако вървите по точките в ред, вие определяте региона, който е от лявата ви страна. Така че, ако посочите точките в обратен ред, получавате всичко, но не и вашия регион! Ще разберете това веднага, тъй като преди SQL 2012 вие сте ограничени да имате региони, които се съдържат изцяло в полукълбо.

Но сега трябва да попитам:предвид въпроса, който зададохте преди (който свързах по-горе), получавате ли шейпфайлове с полигони в тях? Ако е така, запазете го и си спестите главоболието да го реконструирате.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво е безплатен инструмент за сравняване на две бази данни на SQL Server?

  2. Как да извлечете стойности от колона и да актуализирате резултата в друга колона

  3. SQL Server SHOWPLAN_ALL

  4. SSIS ForEach цикъл - промяна на връзката вътре в for цикъл

  5. Грешка при конвертиране на типове данни при импортиране от Excel в SQL Server 2008