2011-01-30 12 views
6

Tôi làm cách nào để ánh xạ điểm và đa giác thành các loại java. Nếu điều này là không thể, giải pháp thay thế là gì?Hỗ trợ không gian địa lý trong JPA

Tôi muốn sử dụng hỗ trợ không gian địa lý trong mysql hoặc postgres thông qua JPA.

+0

Tôi đang xem xét forking hibernate spatial và tạo một số cơ bản chung JPA 2.1 không gian địa lý thư viện hỗ trợ. Một cái gì đó giống như 'không gian JPA'. –

Trả lời

0

Ánh xạ bản đồ và đa giác trong java không phải là rất tự nhiên. (logic trừu tượng sẽ khá cồng kềnh). Tôi sẽ đề nghị sử dụng mô hình đồ thị (như rdf). Nhưng điều đó có thể có một mức độ tốt của đường cong học tập. Vui lòng xem GVSig. Chúng là dự án mã nguồn mở dựa trên java.

Tôi đã đánh giá chúng trước khi chuyển sang phân tích không gian địa lý hoàn chỉnh hơn bằng Allegrograph và RDF.

+0

suy nghĩ của bạn về biểu đồ allegro là gì? –

0

Tôi cố gắng này quá - bạn có thể lấy dữ liệu nếu bạn khai báo lĩnh vực của bạn trong JPA như một Byte[] và nó sẽ đi xuống như một blob, nhưng trong MySQL định dạng nội bộ không gian - Vì vậy, không có vấn đề gì, bạn sẽ luôn luôn có được một định dạng nội bộ không đọc được - đặt cược tốt nhất của bạn trong JPA là sử dụng một truy vấn SQL tự nhiên để lấy dữ liệu dưới dạng văn bản.

SELECT AsText(columnName) FROM tableName; 

Đối với instace:

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

lợi nhuận trong trường hợp của tôi: POINT(40.01999 -75.147171).