1. Список используемых технологий:
2. Список библиотек и их версий:
— postgresql-9.4.1212.jre7.jar; — hibernate-spatial-4.0.1.jar; — jts-1.13.jar; — postgis-jdbc-2.1.7.jar.
Ссылка на скачивание файлов: http://pan.baidu.com/s/1dEU7x9B.
3. Файл application.conf:
db.default.url=jdbc:postgresql:test
db.default.driver=org.postgresql.Driver
db.default.user=postgres
db.default.pass=tgw@123
jpa.default.dialect=org.hibernate.spatial.dialect.postgis.PostgisDialect
4. Команды для создания расширений в PostgreSQL:
-- Enable PostGIS (includes raster)
CREATE EXTENSION postgis;
-- Enable Topology
CREATE EXTENSION postgis_topology;
-- Enable PostGIS Advanced 3D
-- and other geoprocessing algorithms
-- sfcgal not available with all distributions
CREATE EXTENSION postgis_sfcgal;
-- fuzzy matching needed for Tiger
CREATE EXTENSION fuzzystrmatch;
-- rule based standardizer
CREATE EXTENSION address_standardizer;
-- example rule data set
CREATE EXTENSION address_standardizer_data_us;
-- Enable US Tiger Geocoder
CREATE EXTENSION postgis_tiger_geocoder;
Пример модели PostGIS — тип geometry(Point,4326).
5. Примеры кода:
BaseModel.java — базовый класс для моделей PostgreSQL с идентификатором ID:
package models;
import play.db.jpa.GenericModel;
import javax.persistence.*;
/**
* Created by TangGaowei on 2016/11/15.
*/
@MappedSuperclass
public class BaseModel extends GenericModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long id;
public Long getId() {
return id;
}
@Override
public Object _key() {
return getId();
}
}
UserModel.java — модель для работы с данными PostGIS:
package models;
import javax.persistence.*;
import org.hibernate.annotations.Type;
import com.vividsolutions.jts.geom.Point;
@Entity
public class UserModel extends BaseModel {
public String name; // Имя
@Column(columnDefinition = "geometry(Point,4326)")
@Type(type = "org.hibernate.spatial.GeometryType")
public Point location;; // Местоположение
public Integer state; // Состояние
}
Application.java — пример использования модели:
package controllers;
import com.vividsolutions.jts.geom.*;
import org.hibernate.spatial.jts.mgeom.MCoordinateSequence;
import org.hibernate.spatial.jts.mgeom.MGeometryFactory;
import play.mvc.*;
import models.*;
public class Application extends Controller {
public static void index() {
UserModel user = UserModel.find("name=?", "test").first();
if(user == null){
user = new UserModel();
user.name = "test";
user.save();
}
else{
// Изменение местоположения
MGeometryFactory mgf = new MGeometryFactory(new PrecisionModel(), 4326);
Coordinate coord = new Coordinate( 32.581112, 124.381802 );
MCoordinateSequence coordinates = new MCoordinateSequence(new Coordinate[]{coord});
Point location = mgf.createPoint(coordinates);
user.location = location;
user.save();
}
renderText("hello");
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )