[postgis-users] Finding that third point on an arc.

Blake Crosby me at blakecrosby.com
Sun Sep 6 10:59:59 PDT 2009


Problem solved.. It was a transform issue.

Needed to ensure that the curvetoline() function was happening on 
geometry that transformed to the proper UTM srid first.

Blake

Blake Crosby wrote:
> Hello,
> 
> I have:
> 
> - Starting Point (lat/long, srid=4326)
> Ps = POINT(-75.7016666666667 45.1127777777778)
> - Ending Point (lat/long, srid=4326)
> Pe = POINT(-75.5627777777778 45.0972222222222)
> - Centre of arc (lat/long, srid=4326)
> Pc= POINT(-75.6333333333333 45.1)
> - Radius (meters: 5556)
> 
> I thought I could construct a circular line string, however you need an 
> odd number of points. To get that third point, I was going to use the 
> rotate function found here:
> 
> http://trac.osgeo.org/postgis/wiki/UsersWikiplpgsqlfunctions
> 
> To rotate the starting point (Ps) 90 degrees and use that result as the 
> third part of arc.
> 
> The resulting arc looks more like an ellipse when being projected in my 
> final projection.
> 
> Does anyone know where I'm going wrong? Essentially I'm doing this:
> 
> Rotate Ps:
> select astext(rotateatpoint(st_geomfromtext('POINT(-75.7016666666667 
> 45.1127777777778)',4326),-75.7016666666667,45.1127777777778,pi()/2));
>                   astext
> -------------------------------------------
>  POINT(-75.7016666666667 45.1127777777778)
> 
> generate arc, and convert to a linestring:
> 
> select 
> astext(st_curvetoline(st_geomfromtext('CIRCULARSTRING(-75.7016666666667 
> 45.1127777777778,-75.5627777777778 45.0972222222222,-75.7016666666667 
> 45.1127777777778)',4326)));
> 
> Take a look at the screen shot here. The outer arc is the one generated 
> here, the inner one is what I need to get.
> 
> http://www.blakecrosby.com/arc.png
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
> 



More information about the postgis-users mailing list