Maintenant, je fais des affaires de SIG, je dois donc exploiter l'objet géométrique dans Postgis. J'ai trouvé de nombreuses bibliothèques, telles que des géooutils, mais je ne peux pas le télécharger pour une raison quelconque.
Il existe aussi jts, mais ce n'est pas simple à utiliser et c'est très compliqué à faire fonctionner. J'ai trouvé une autre bibliothèque de classe : geolatte-geom et geolatte-geojson.
Utilisé pour opérer la conversion entre géométrie, String et json. Ma compréhension personnelle de json et geojson est que les formats de sortie sont différents. Il existe des propriétés plus spécifiques à la géométrie.
Principalement utilisés pour convertir String en objets géométriques, wkt et wkb sont pratiques et faciles à utiliser.
<!-- https://mvnrepository.com/artifact/org.geolatte/geolatte-geom --> <dependency> <groupId>org.geolatte</groupId> <artifactId>geolatte-geom</artifactId> <version>1.6.0</version> </dependency> <!-- https://mvnrepository.com/artifact/org.geolatte/geolatte-geojson --> <dependency> <groupId>org.geolatte</groupId> <artifactId>geolatte-geojson</artifactId> <version>1.6.0</version> </dependency>
public static void main(String[] args) { // 模拟数据库中直接取出的geometry对象值(他是二进制的) // WKT 是字符串形式,类似"POINT(1 2)"的形式 // 所以WKT转 geometry,相当于是字符串转geometry // WKB转 geometry,相当于是字节转geometry String s="01020000800200000097E5880801845C404D064F3AF4AE36400000000000000000290A915F01845C40DC90B1A051AE36400000000000000000"; Geometry geo = Wkb.fromWkb(ByteBuffer.from(s)); // geometry对象和WKT输出一致 // Geometry geometry1 = Wkt.fromWkt(wkt); System.out.println("-----Geometry------"+geo.getPositionN(1)); System.out.println("-----wkt------"+ Wkt.toWkt(geo)); System.out.println("-----wkb------"+Wkb.toWkb(geo)); }
Récemment, parce que j'ai besoin de sauvegarder certaines informations de bloc de longitude et de latitude dans la base de données, j'ai utilisé l'attribut Geometry (objet de géométrie) dans MySQL. J'ai collecté beaucoup d'informations sur Internet, mais il y a encore divers problèmes lorsque je l'utilise réellement, je recommande donc une méthode qui peut être un peu stupide mais pratique (mon outil Springboot de mon environnement d'utilisation est sts). pour illustrer. "Opération" type spatial
Valeur de coordonnée | POINT(104.00924 30.46872) | LineString | |
Ligne, reliée par une série de points | LINESTRING(1 1, 1 1 , 1 1) | Polygon | |
se compose de plusieurs lignes | POLYGON((1 1, 2 2, 3 3, 4 4, 5 5)) | MultiPoint | |
classe d'ensemble, y compris plusieurs points | MULTIPOINT(1 1, 2 2, 1 1) | MultiLineString | |
classe d'ensemble, contenant plusieurs lignes | MULTILINESTRING((1 1, 2 2), (1 1, 1 1)) | MultiPolygon | |
Classe Collection, contenant plusieurs polygones | MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)), ((1 1, 1 1, 1 1, 1 1, 1 1))) | GeometryCollection | |
Classe Collection, qui peut inclure plusieurs points, lignes, polygones | GEOMETRYCOLLECTION(POINT(1 1), POINT( 3 3), LINESTRING(1 1, 2 2)) | ||
INSÉRER DANS `geometry`(`geome`) VALUES(GeomFromText('GEOMETRYCOLLECTION(MULTIPOLYGON(((104.009241 30.468972,104.009229 30.468961,104.009225 30.468997) ),((104.009241 30.468972,104.009229 30.468961,104.009225 30.468997))),MULTIPOLYGONE (((104.009241 30.468972,104.009229 30.468961,104.009225 30.468997)))')); | Lorsque les données sont prêtes, l'opération de lecture est prête. | Ajoutez des dépendances pour les objets opérationnels tels que la géométrie dans pom.xml. | |
Exemple d'utilisation complet, analysez l'objet géométrique dans la base de données et obtenez les données ponctuelles dont nous avons besoin. |
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!