Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

STZawiera w kolumnie Geografia

Użyłem kodu, który dla Ciebie napisałem (Przechowywanie kolumny „Punkt” z pliku ShapeFile ) jako punkt wyjścia do uzyskania tabeli punktów. Stamtąd:

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)

Ten kod zakłada kilka rzeczy. Po pierwsze:że twoje punkty są uporządkowane tak, jakbyś poruszał się po granicach regionu. To ma znaczenie. Pomyśl o łamigłówce typu „połącz kropki”. Aby uzyskać właściwy obraz, musisz je wykonać we właściwej kolejności. Po drugie, w związku z pierwszym, muszą być we właściwej orientacji. Wielokąty stosują się do zasady lewej ręki. Oznacza to, że jeśli chodziłeś po punktach w kolejności, definiujesz region, który znajduje się po twojej lewej stronie. Tak więc, jeśli określisz punkty w odwrotnej kolejności, otrzymasz wszystko oprócz swojego regionu! Dowiesz się o tym od razu, ponieważ przed SQL 2012 ograniczasz się do regionów, które są w pełni zawarte w półkuli.

Ale teraz muszę zapytać:biorąc pod uwagę pytanie, które zadałeś wcześniej (do którego połączyłem powyżej), czy otrzymujesz pliki kształtu z wielokątami w nich? Jeśli tak, zachowaj to i oszczędź sobie bólu głowy związanego z rekonstrukcją.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najbardziej efektywny sposób na ograniczenie liczby wierszy zwracanych z zapytania składającego — TSQL

  2. SQL Server 2008 — kolumna obliczeniowa HashBytes

  3. Zgubiłem bazę danych SQL Server 2008, muszę przywrócić strukturę bazy danych ze schematu LINQ

  4. Zwróć stałą BIT z procedury składowanej SQL

  5. Wiele wartości kolumn w jednym wierszu