[GIS] Spatial Data from Postgis to Java/REST with RestEasy + Jackson

geojsonjsonpostgisrest

I'm developing an application where I take a route from google maps, save it in postgresql/postgis. I'd like to take this route (LineString geometry) and send it back to Google Maps.

I already can save the map in the database, now I want to show the routes on a map.

On the client side I'm using JQuery (AJAX) + Google Maps Api.
On the server side I'm using REST services with RestEasy.

I tried to work with Jackson to transform the Entity to JSON, but, the Jackson fails to transform geometric data in json. Does anyone know how to transform this spatial data into JSON?

My Entity:

public class Rota {
...
private LineString caminho;
public Rota() {
}
public Rota(Integer id, Usuario usuario, String descricao, LineString     lineString) {
    this.id = id;
    this.usuario = usuario;
    this.descricao = descricao;
    this.caminho = lineString;
}
// getters and setters
@Type(type = "org.hibernate.spatial.GeometryType")
public LineString getCaminho() {
    return caminho;
}
public void setCaminho(LineString caminho) {
    this.caminho = caminho;
}
// hashcode and equals method
}

My REST service:

@Inject
private RotaBC rotaBC;

@GET
@Path("/rotas/{idrota}")
@Produces("application/json")
public Rota show(@PathParam("id") String id) {
    return rotaBC.show(Integer.parseInt(id));
} 

The error:

15:05:16,447 ERROR
[org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/sharecar].[default]]
(http–0.0.0.0-8080-1) Servlet.service() for servlet default threw
exception: java.lang.ClassNotFoundException:
org.codehaus.jackson.map.JsonMappingException$Reference from [Module
"org.codehaus.jackson.jackson-mapper-asl:main" from local module
loader @1d332b (roots: /opt/demoiselle/server/jboss-7.1/modules)] …
at
org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
at
org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:166)
… at
org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:446)
at
org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150)
at
org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112)

Best Answer

To get json (or geojson) from PostGIS there is the function ST_geojson() which will return a geometric object in geojson form.

Related Question