[mapserver-users] Curved Lines

Mr. Puneet Kishor punk.kish at gmail.com
Wed Jun 27 07:50:07 PDT 2012


On Jun 27, 2012, at 8:17 PM, Rahkonen Jukka wrote:

> Hi,
> 
> The question, if I understand is correctly, is relevant. In EPSG:4326 shortest distance between two points is better expressed as a curve than as a straight linestring. However, Mapserver does not support curves of any kind.


Interesting spin; didn't think of that. However, note that, as Brent pointed out, the OP is SELECTing the same coords twice, so, in effect, they are two coincident points of line length zero.



> 
> You may find some workaround from GDAL. Ogr2ogr is having a "segmentize" option for this purpose. It does not support real curves either, but it creates intermediate points so that linestrings are shorter and thus follow the curve better. See http://gdal.org/ogr2ogr.html
> 
> -Jukka Rahkonen-
> 
>> -----Alkuperäinen viesti-----
>> Lähettäjä: mapserver-users-bounces at lists.osgeo.org 
>> [mailto:mapserver-users-bounces at lists.osgeo.org] Puolesta Mr. 
>> Puneet Kishor
>> Lähetetty: 27. kesäkuuta 2012 17:39
>> Vastaanottaja: juliap
>> Kopio: mapserver-users at lists.osgeo.org
>> Aihe: Re: [mapserver-users] Curved Lines
>> 
>> 
>> On Jun 27, 2012, at 2:13 AM, juliap wrote:
>> 
>>> Hi all,
>>> 
>>> I have the following layer of type line :
>>> 
>>> LAYER 
>>> 	NAME line
>>> 	STATUS ON
>>> 	TYPE LINE
>>> 	CONNECTIONTYPE OGR	
>>> 	CONNECTION 
>> "MSSQL:server=server;database=database;uid=id;pwd=pwd" 
>>> 	DATA "SELECT geometry::STLineFromText('LINESTRING ('
>>> 		  +CAST(Geo.STX AS VARCHAR(54))
>>> 		  +' '
>>> 	          +CAST(Geo.STY AS VARCHAR(54))
>>> 		  +', '
>>> 		  +CAST(Geo.STX AS VARCHAR(54))
>>> 		  +' '
>>> 		  +CAST(Geo.STY AS VARCHAR(54)) 
>>> 		  +')'	  
>>> 		  ,4326)
>>> 	FROM column WHERE DATEDIFF(mi, CreatedON, 
>> CURRENT_TIMESTAMP) <='%x%'"		
>>> 	CLASS
>>> 	STYLE					
>>> 			WIDTH 3
>>> 			SIZE 1
>>> 			COLOR 0 0 128
>>> 	END # end of style
>>> 	END # end of class
>>> 	PROJECTION
>>> 		"init=epsg:4326" 
>>> 	END # end of projection
>>> END # end of layer
>>> 
>>> I was wondering how to get a curved line from this data. I 
>> tried using angle
>>> and gap, but I don't see any changes.
>>> Any suggestions?
>>> 
>> 
>> 
>> Your understanding of geometry is a bit off here. In a query 
>> result set, each row is a feature, and a line feature would 
>> be made up of two or points; a curved line feature, of 
>> course, would be made up of three or more points.
>> 
>> What you are getting in the result set above is a bunch of 
>> features, each of which are a point repeated twice. I think 
>> what you really want is to create a single line feature from 
>> all these points. So, you would probably do some kind of an 
>> aggregate on these points. I don't know the functions 
>> available in SQL Server, but there must be an analog for 
>> Postgres's aggregate functions. You want to collect all the 
>> points and make a line feature from them, and then pass that 
>> to MapServer to draw. You could make a view that does all 
>> this, and then call the view from MapServer.
>> 
>> Hope this helps.
>> 
>> 
>> --
>> Puneet Kishor
>> _______________________________________________
>> mapserver-users mailing list
>> mapserver-users at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/mapserver-users
>> 
> _______________________________________________
> mapserver-users mailing list
> mapserver-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapserver-users



More information about the mapserver-users mailing list