java geojson_GEOJSON标准格式学习

最近做的项目需要详细了解geojson,因此查了一些资料,现在整理一份标准格式的记录,要理解本文需要首先了解json的基本知识,这里不过多展开,可以去参考w3school上的教程,简言之,json是通过键值对表示数据对象的一种格式,可以很好地表达数据,其全称为JavaScript Object Notation(JavaScript Object Notation),正如这个名称,JavaScript和json联系紧密,但是json可以应用的范围很广,不止于前端,它比XML数据更轻量、更容易解析(某种角度上说xml可以更自由地封装更多的数据)。很多编程语言都有对应的json解析库,例如Python的json库,C#的Newtonsoft.Json,Java的org.json。geojson是用json的语法表达和存储地理数据,可以说是json的子集。

例如下面就是一个点数据:

{

"type": "FeatureCollection",

"features": [

{"type":"Feature",

"properties":{},

"geometry":{

"type":"Point",

"coordinates":[105.380859375,31.57853542647338]

}

}

]

}

852d7ad081b3

例子图片

(注:以下geojson的效果截图都来自geojson.io在线生成)

geojson将所有的地理要素分为Point、MultiPoint、LineString、MultiLineString、Polygon、MultiPolygon、GeometryCollection。首先是将这些要素封装到单个的geometry里,然后作为一个个的Feature(也就是要素);要素放到一个要素集合里,从树状结构来理解FeatureCollection就是根节点,表示为:

{

"type": "FeatureCollection",

"features": []

}

所有地理要素放在features的列表里。

点要素Point

点要素是最简单的,类型type对应Point,然后坐标是一个1维的数组,里面有两个元素(如果是立体的坐标就是三维x,y,z),分别为经度和纬度。properties里面可以封装各种属性,例如名称、标识颜色等等。

{"

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中可以使用GeoTools库将GeoJSON数据导入到数据库中。下面是一个简单的步骤: 1. 首先,确保你已经将GeoTools库添加到你的Java项目中。 2. 导入所需的类: ```java import org.geotools.data.DataStore; import org.geotools.data.DataStoreFinder; import org.geotools.data.Transaction; import org.geotools.data.collection.CollectionFeatureSource; import org.geotools.data.simple.SimpleFeatureStore; import org.geotools.geojson.feature.FeatureJSON; import org.opengis.feature.simple.SimpleFeature; import java.io.File; import java.io.FileInputStream; import java.util.HashMap; import java.util.Map; ``` 3. 创建一个方法来导入GeoJSON数据到数据库中: ```java public void importGeoJsonToDatabase(String geoJsonFilePath, String databaseTypeName, String databaseUrl, String tableName) { try { // 读取GeoJSON文件 File geoJsonFile = new File(geoJsonFilePath); FileInputStream inputStream = new FileInputStream(geoJsonFile); // 创建FeatureJSON对象 FeatureJSON featureJSON = new FeatureJSON(); // 将GeoJSON文件解析为SimpleFeature对象 SimpleFeature feature = (SimpleFeature) featureJSON.readFeature(inputStream); // 创建数据源 Map<String, Object> params = new HashMap<>(); params.put("dbtype", databaseTypeName); params.put("host", databaseUrl); DataStore dataStore = DataStoreFinder.getDataStore(params); // 获取要导入数据的目标表 SimpleFeatureStore featureStore = (SimpleFeatureStore) dataStore.getFeatureSource(tableName); // 开始事务 Transaction transaction = new DefaultTransaction(); featureStore.setTransaction(transaction); try { // 导入数据 featureStore.addFeatures(DataUtilities.collection(feature)); // 提交事务 transaction.commit(); } catch (Exception e) { // 回滚事务 transaction.rollback(); e.printStackTrace(); } finally { // 关闭数据源 transaction.close(); dataStore.dispose(); } } catch (Exception e) { e.printStackTrace(); } } ``` 4. 调用方法进行导入: ```java importGeoJsonToDatabase("path/to/geojson/file.json", "postgis", "localhost:5432/database", "tableName"); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值