sql >> Databasteknik >  >> RDS >> Sqlserver

ST Innehåller på kolumnen Geografi

Jag använde koden som jag skrev åt dig (Lagra kolumnen "Point" från ShapeFile ) som utgångspunkt för att få en poängtabell. Därifrån:

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)

Den här koden förutsätter ett par saker. För det första:att dina poäng är ordnade som du skulle gå runt regionens gräns. Det här spelar roll. Tänk på ett pussel för att koppla ihop punkterna. För att få rätt bild måste du göra dem i rätt ordning. För det andra, relaterat till den första, måste de vara i rätt riktning. Polygoner följer vänsterhandsregeln. Det vill säga, om du gick punkterna i ordning, definierar du regionen som är på din vänstra sida. Så om du anger punkterna i omvänd ordning får du allt utom din region! Du kommer att veta detta direkt eftersom före SQL 2012 är du begränsad till att ha regioner som är helt inneslutna i en halvklot.

Men nu måste jag fråga:med tanke på frågan som du ställde tidigare (som jag länkade till ovan), får du shapefiler med polygoner i? Om så är fallet, lagra det och spara dig själv huvudvärken med att rekonstruera det.




  1. Olika sätt att visa tabeller i MySQL Server

  2. MySQL-fråga med en array

  3. MySQL räknar alla barn oavsett hur många det är

  4. Laravel vältalig fråga JSON-kolumn med Where In?