Ho bisogno di estrarre punti da Linestring utilizzando SQL Server. So che posso vedere le coordinate con geometry.ToString() ma ho bisogno di una nuova geometria punti. Come posso farlo?Linestring to Points
7
A
risposta
1
Non conosco quasi nulla del tipo di dati di geometria, ma il documentation dice che si ottiene il numero di punti nell'oggetto usando STNumPoints
e quindi si recuperano i singoli punti usando STPointN
.
6
Ecco un piccolo esempio su come estrarre i punti da una stringa lineare:
declare @LineString geography,
@loop int
declare @Points table (Point geography)
set @LineString = geography::Parse('LINESTRING(
-22.8317451477051 -43.4041786193848,-22.8308925628662 -43.4045524597168,-22.8314971923828 -43.404727935791,
-22.833927154541 -43.4069404602051,-22.8267574310303 -43.4071388244629)')
set @loop = @LineString.STNumPoints()
while @loop > 0
begin
insert into @Points values(@LineString.STPointN(@loop))
set @loop = @loop -1
end
select Point.Lat as Lat, Point.Long as Long from @Points
E non si arrendono: dati spaziali in T-SQL è un po 'complicato, ma funziona!
12
Se stai usando SQL 2005 +, mi sento di raccomandare a farlo con un CTE:
DECLARE @GeometryToConvert GEOMETRY
SET @GeometryToConvert =
GEOMETRY::STGeomFromText('LINESTRING (-71.880713132200128 43.149953199689264, -71.88050339886712 43.149719933022993, -71.880331598867372 43.149278533023676, -71.88013753220099 43.147887799692512, -71.879965998867931 43.147531933026357, -71.879658998868422 43.147003933027179, -71.879539598868575 43.146660333027739, -71.879525332201979 43.145994399695439, -71.87959319886852 43.145452399696296, -71.879660598868384 43.14531113302985, -71.879915932201357 43.145025599696908, -71.879923198868028 43.1449217996971, -71.879885998868076 43.144850733030523, -71.879683932201715 43.144662333030851, -71.879601398868488 43.144565333030982, -71.879316798868956 43.144338333031328, -71.879092332202617 43.144019799698469, -71.8789277322029 43.143902533032019, -71.878747932203169 43.143911533031996, -71.878478132203554 43.14405779969843, -71.878328332203807 43.144066133031743, -71.878148732204068 43.144016599698489, -71.8772655988721 43.143174533033118, -71.876876198872708 43.142725133033821, -71.876801532206173 43.142654933033953, -71.876629398873092 43.142600733034044)', 4269)
;
WITH GeometryPoints(N, Point) AS
(
SELECT 1, @GeometryToConvert.STPointN(1)
UNION ALL
SELECT N + 1, @GeometryToConvert.STPointN(N + 1)
FROM GeometryPoints GP
WHERE N < @GeometryToConvert.STNumPoints()
)
SELECT *, Point.STAsText() FROM GeometryPoints
Testo Risultati
Risultati spaziali - STBuffer (.0001)
Problemi correlati
- 1. PHP - Serialize floating points
- 2. Intersezione di due LineString Geopandas
- 3. Come formattare Highcharts dataLabels Decimal Points
- 4. Bullet Points Posizionamento con l'arabo RTL direzione
- 5. Google Maps e lunghezza LINESTRING SQL Server incoerente
- 6. stima dei costi nel progetto di sviluppo software, Function Points?
- 7. Trova punti vicino LineString in mongodb ordinati per distanza
- 8. Qual è la differenza tra LineString e Multipoint in GeoJSON
- 9. Parse XML utilizzando LINQ to XML per classe di oggetti
- 10. Mercurial to Mercurial to Subversion Workflow Problem
- 11. text-to-speech-to-wav in Delphi
- 12. Moment.js transform to to date object
- 13. To Workflow o Not to Workflow?
- 14. NSImage to NSData, then to UIImage
- 15. Backbone: Model-to-modello e modello-to-model vincolante
- 16. Passare la funzione pointer-to-member come pointer-to-function
- 17. XML to C struct e C struct to XML
- 18. Objective-C Full UIView to PDF
- 19. Resultset To List
- 20. Assembly language to C
- 21. Add to DataBound DropDownList
- 22. Dumping memory to file
- 23. Delphi to .NET Converter
- 24. Nosql many-to-many
- 25. Linq to NHibernate
- 26. Tuple to string
- 27. Bind Collection to StackPanel
- 28. Piping find to find
- 29. Linq to Entities delete
- 30. NSString To NSNumber
Come hai fatto a far sembrare i tuoi punti così? Quando visualizzo punti sono appena leggibili. –
Utilizzo della funzione STBuffer(). Il valore ideale varia a seconda che tu stia usando Geometry o Geography http://technet.microsoft.com/en-us/library/bb933965.aspx –
Sì, sto usando la geografia con STBuffer (1) e i punti sono oblunghi. Come posso renderli dei cerchi perfetti come i tuoi? –