--- dao/FuldDaekningWorker/src/main/java/dk/daoas/fulddaekning/osrm/OSRMHelper.java 2015/10/06 21:26:55 2741 +++ dao/FuldDaekningWorker/src/main/java/dk/daoas/fulddaekning/osrm/OSRMHelper.java 2015/10/20 10:36:06 2755 @@ -1,25 +1,19 @@ package dk.daoas.fulddaekning.osrm; import java.io.IOException; -import java.util.ArrayList; import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.concurrent.Future; import java.util.logging.Level; import java.util.logging.Logger; +import net.minidev.json.JSONValue; + import org.apache.http.HttpEntity; -import org.apache.http.HttpHost; -import org.apache.http.HttpRequest; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.ResponseHandler; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; -import org.apache.http.impl.nio.client.CloseableHttpPipeliningClient; -import org.apache.http.impl.nio.client.HttpAsyncClients; import org.apache.http.util.EntityUtils; import com.google.gson.Gson; @@ -27,27 +21,33 @@ import dk.daoas.fulddaekning.Adresse; import dk.daoas.fulddaekning.HttpUtil; - +/* import dk.thoerup.osrmbinding.OSRMBinding; import dk.thoerup.osrmbinding.ViarouteResult; +*/ public class OSRMHelper { + + private static final boolean ENABLE_OSRM = false; + final static Logger logger = Logger.getLogger( OSRMHelper.class.toString() ); Gson gson = new Gson(); - static OSRMBinding binding = null; + //static OSRMBinding binding = null; - final String host = "127.0.0.1"; + //final String host = "127.0.0.1"; + final String host = "10.30.2.103"; final int port = 5000; final String base_url = "http://" + host + ":" + port; - +/* private static synchronized void initOsrm() { if (binding == null) { binding = new OSRMBinding("/home/openstreetmap/denmark-latest.osrm"); } } +*/ public Adresse getNearestTableHttp(Adresse a1, Collection haystack) { @@ -67,12 +67,18 @@ try { String txtResponse = HttpUtil.getContentString(sb.toString(), 500, "UTF-8"); - OSRMDistanceTable table = gson.fromJson(txtResponse, OSRMDistanceTable.class); + //OSRMDistanceTable table = gson.fromJson(txtResponse, OSRMDistanceTable.class); + OSRMDistanceTable table = JSONValue.parse(txtResponse, OSRMDistanceTable.class); if (table.status != 0) { logger.info("OSRM failed with message: " + table.status_message); return null; } + if ( table.distance_table.length != (hayArray.length + 1) ) { + logger.log(Level.SEVERE, "Wrong number of results in matrix " + table.distance_table.length); + System.exit(0); + } + int bedsteTid = Integer.MAX_VALUE; for (int i = 1; i haystack) { if (binding == null) { initOsrm(); @@ -116,6 +125,11 @@ try { float distance_table[][] = binding.table( points ); + + if ( distance_table.length != (hayArray.length + 1) ) { + logger.log(Level.SEVERE, "Wrong number of results in matrix " + distance_table.length); + System.exit(0); + } int bedsteTid = Integer.MAX_VALUE; @@ -133,6 +147,46 @@ } return bedsteAdresse; + }*/ + + + public Adresse getNearestMultitargetHttp(Adresse a1, Collection haystack) { + + Adresse bedsteAdresse = null; + + Adresse hayArray[] = new Adresse[ haystack.size() ]; + haystack.toArray(hayArray); + + StringBuilder sb = new StringBuilder(); + sb.append(base_url); + sb.append("/multitarget?loc=").append(a1.latitude).append(",").append(a1.longitude); + + for(int i = 0; i haystack) { @@ -200,7 +254,7 @@ return bedsteAdresse; } - +/* public Adresse getNearestViarouteJni(Adresse a1, Collection haystack) { if (binding == null) { @@ -239,7 +293,7 @@ } return bedsteAdresse; - } + }*/ }