sql >> Database >  >> RDS >> Sqlserver

STBevat op kolom Geografie

Ik heb de code gebruikt die ik voor je heb geschreven (Kolom 'Punt' opslaan uit ShapeFile ) als uitgangspunt om een ​​puntentabel te krijgen. Vanaf daar:

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)

Deze code gaat uit van een aantal dingen. Ten eerste:dat uw punten worden gerangschikt zoals u rond de grens van de regio zou gaan. Dit is van belang. Denk aan een verbind-de-dots-puzzel. Om de juiste foto te krijgen, moet je ze in de juiste volgorde doen. Ten tweede, gerelateerd aan het eerste, moeten ze in de juiste richting staan. Veelhoeken volgen de linkerhandregel. Dat wil zeggen, als je de punten in volgorde zou lopen, definieer je de regio aan je linkerkant. Dus als u de punten in omgekeerde volgorde opgeeft, krijgt u alles behalve uw regio! Je weet dit meteen, want vóór SQL 2012 heb je alleen regio's die volledig in een halfrond liggen.

Maar nu moet ik vragen:krijg je, gezien de vraag die je eerder hebt gesteld (waar ik hierboven naar heb gelinkt), shapefiles met polygonen erin? Als dat zo is, sla dat dan op en bespaar jezelf de hoofdpijn van het reconstrueren ervan.




  1. Herstelvereisten vóór back-ups

  2. Gebruik dezelfde parameter meerdere keren in WHERE-voorwaarden van een SQL-query voor gebruik in JDBC

  3. Andere benadering van het gebruik van de IN-clausule in MySql

  4. Relatie identificeren - veel op veel