2011-01-30 8 views
6

Come si esegue il mapping del punto e del poligono sui tipi java. Se questo non è possibile, qual è una soluzione alternativa?Supporto geospaziale in JPA

Vorrei utilizzare il supporto geospaziale in mysql o postgres tramite JPA.

+0

Sto prendendo in considerazione la possibilità di eseguire lo hibernate spaziale e creare una libreria di supporto geospaziale JPA 2.1 di base. Qualcosa come "spaziale JPA". –

risposta

0

La mappa di mappatura e il poligono in java non sono molto naturali. (la logica di astrazione sarà abbastanza voluminosa). Suggerirei di utilizzare un modello grafico (come rdf). Ma questo potrebbe richiedere un buon grado di curva di apprendimento. Si prega di controllare GVSig. Sono progetti open source basati su Java.

Li ho valutati prima di passare a un'analisi geospaziale più completa utilizzando Allegrograph e RDF.

+0

quali sono le tue opinioni sul grafico allegro? –

0

ho provato anche questo - è possibile ottenere i dati se si dichiara il vostro campo in JPA come Byte[] e verrà giù come un blob, ma in MySQL formato interno spaziale - quindi non importa cosa, avrai sempre un formato interno illeggibile - la soluzione migliore in JPA è utilizzare una query SQL nativa per ottenere i dati come testo.

SELECT AsText(columnName) FROM tableName; 

Per instace:

String sql = "SELECT AsText(LOCATION) FROM ENTITY where id=?1"; 
return (String) em.createNativeQuery(sql) 
        .setParameter(1, id) 
        .getSingleResult(); 

ritorna nel mio caso: POINT(40.01999 -75.147171).