Hi,

Here is a demo script which finds route from the service or yournavigation.org. 
Save the following code into lib\ext\BeanTools, draw one or more lines with 
OpenJUMP by using EPSG:4326 system, run the tool and copy the URLs from the 
result window into browser and you will get the routes in KML format. Script 
creates a request which follows the YOURS syntax 
http://wiki.openstreetmap.org/wiki/YOURS and it is simple to modify to use 
other YOURS parameters. I also made another version which is getting routes 
from the service of the Helsinki Region Traffic and it works fine too.

With a little bit of work it should be possible to make an OpenJUMP routing 
service plugin. Creating a request is easy but a very good plugin should be 
able to handle coordinate conversions between OJ project coordinate system and 
the one used by the routing service. And then OpenJUMP should be able to parse 
the returning route which is typically in GPX or KML format. However, I tested 
also a workaround by using GDAL in between. OpenJUMP can create a ogr2ogr 
request and ogr2ogr can save the result as a shapefile and possibly converted 
into another projection.



Get_YOURS_Route.bsh
==============
{
import com.vividsolutions.jts.geom.*;
import com.vividsolutions.jump.feature.*;
import com.vividsolutions.jump.geom.EnvelopeUtil;
import com.vividsolutions.jump.workbench.model.*;

        htmlFrame = wc.workbench.frame.outputFrame;
        htmlFrame.createNewDocument();
        htmlFrame.setTitle("Output for gdal_translate");
        fc = 
wc.getLayerNamePanel().getSelectedLayers()[0].getFeatureCollectionWrapper();
        int j=1;
        for (Iterator i = fc.getFeatures().iterator(); i.hasNext();) {
                Feature feature = (Feature) i.next();
                LineString lineString = (LineString)feature.getGeometry();
                
htmlFrame.addText("http://www.yournavigation.org/api/1.0/gosmore.php?format=kml&flat=";
                        +lineString.getStartPoint().getY()+"&flon="
                        +lineString.getStartPoint().getX()+"&tlat="
                        +lineString.getEndPoint().getY()+"&tlon="
                        +lineString.getEndPoint().getX()
                        +"&v=motorcar"
                        +"&fast=1"
                        +"&layer=mapnik");
                j++;
        }
        wc.workbench.frame.flash(htmlFrame);
        htmlFrame.surface();
}


With small modifications the script works with the routing service of the 
Helsinki Region Traffic. Coordinates must be in EPSG:2392 system. Can be tested 
for example with LINESTRING (2538008.7818696885 6679830.130311615, 
2538096.0339943343 6679899.818696884)



htmlFrame.addText("\"http://pk.hsl.fi/getroute/?format=gpx&profile=kleroweighted&from=location*Koordinaatti[";
                        +lineString.getStartPoint().getX()+", "
                        +lineString.getStartPoint().getY()+"]"
                        +"*"+lineString.getStartPoint().getX()
                        +"*"+lineString.getStartPoint().getY()
                        +"&to=location*Koordinaatti["
                        +lineString.getEndPoint().getX()+", "
                        +lineString.getEndPoint().getY()+"]"
                        +"*"+lineString.getEndPoint().getX()
                        +"*"+lineString.getEndPoint().getY()
                        +"\""  );



-Jukka-

________________________________________
Michaël Michaud wrote:


> Hi Jukka,

> You can easily pick start and end point with
> Geometry geometry = feature.getGeometry();

// this will return something whatever the geometry is
Coordinate[] cc = geometry.getCoordinates();
x_start = cc[0].x;
y_start = cc[0].y;
x_end = cc[cc.length-1].x;
y_end = cc[cc.length-1].y;

// this is more readable if you make sure your geometry is a linestring
before
LineString lineString = (LineString)feature.getGeometry();
x_start = lineString.getStartPoint().getX();
y_start = lineString.getStartPoint().getY();
x_end = lineString.getEndPoint().getX();
y_end = lineString.getEndPoint().getX();

> Warning : I did not check the code

> Michaël

> PS let us know what you achieved with this code

>> Hi,
>>
>> How could I pick Startpoint_X, Startpoint_Y, Endpoint_X,Endpoint_Y from a 
>> linestring with BeanShell? Meaning is to build a http request for an 
>> external routing service. Something similar is done in the following code 
>> with envelope of a geometry for building a WFS GetFeature request with BBOX 
>> filter.
>>
>> Geometry geometry = feature.getGeometry();
>>                  Envelope env = geometry.getEnvelopeInternal();
>>                  htmlFrame.addText("wget "
>>                          +"\"http://hip.latuviitta.org/cgi-bin/";
>>                          +"tinyows?"
>>                          +"SERVICE=WFS"
>>                          +"&VERSION=1.0.0"
>>                          +"&REQUEST=GetFeature"
>>                          +"&TYPENAME=lv:municipalities"
>>                          +"&BBOX="
>>                          +env.getMinX()+","
>>                          +env.getMinY()+","
>>                          +env.getMaxX()+","
>>                          +env.getMaxY()+"\""
>>                          +" -O prexif_"
>>                          +j
>>                          +".gml"  );
>>
>> -Jukka Rahkonen-
>
> ------------------------------------------------------------------------------
> Own the Future-Intel® Level Up Game Demo Contest 2013
> Rise to greatness in Intel's independent game demo contest.
> Compete for recognition, cash, and the chance to get your game
> on Steam. $5K grand prize plus 10 genre and skill prizes.
> Submit your demo by 6/6/13. http://p.sf.net/sfu/intel_levelupd2d
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>
>


------------------------------------------------------------------------------
Own the Future-Intel® Level Up Game Demo Contest 2013
Rise to greatness in Intel's independent game demo contest.
Compete for recognition, cash, and the chance to get your game
on Steam. $5K grand prize plus 10 genre and skill prizes.
Submit your demo by 6/6/13. http://p.sf.net/sfu/intel_levelupd2d
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

------------------------------------------------------------------------------
Own the Future-Intel® Level Up Game Demo Contest 2013
Rise to greatness in Intel's independent game demo contest.
Compete for recognition, cash, and the chance to get your game 
on Steam. $5K grand prize plus 10 genre and skill prizes. 
Submit your demo by 6/6/13. http://p.sf.net/sfu/intel_levelupd2d
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to