String[] WKTS = { "LINESTRING (255351.04293761664 474966.9279243938, 255529.29662365236 474272.4599921228)",
"LINESTRING (255529.29662365236 474272.4599921228, 256166.05830998957 473979.44920198264)"};
final SimpleFeatureType TYPE = DataUtilities.createType("Link",
"geometry:LineString," + // <- the geometry attribute: Point type
"gid:String," + // <- a String attribute
"direction:Integer," + // a number attribute
"orientation:Integer"
SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder(TYPE);
GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();
WKTReader reader = new WKTReader( geometryFactory );
FeatureJSON fjson = new FeatureJSON();
List<SimpleFeature> features = new ArrayList<>();
SimpleFeatureCollection collection = new ListFeatureCollection(TYPE, features);
for (String wkt : WKTS) {
LineString lineString = (LineString)reader.read(wkt);
featureBuilder.add(lineString);
featureBuilder.add("123456");
featureBuilder.add(2);
featureBuilder.add(1);
SimpleFeature feature = featureBuilder.buildFeature(null);
features.add(feature);
StringWriter writer = new StringWriter();
fjson.writeFeatureCollection(collection, writer);
System.out.println(writer.toString());
打印结果如下:
{“type”:”FeatureCollection”,”features”:[{“type”:”Feature”,”geometry”:{“type”:”LineString”,”coordinates”:[[255351.0429,474966.9279],[255529.2966,474272.46]]},”properties”:{“gid”:”123456”,”direction”:2,”orientation”:1},”id”:”fid-67c46b85_15e0778dd81_-8000”},{“type”:”Feature”,”geometry”:{“type”:”LineString”,”coordinates”:[[255529.2966,474272.46],[256166.0583,473979.4492]]},”properties”:{“gid”:”123456”,”direction”:2,”orientation”:1},”id”:”fid-67c46b85_15e0778dd81_-7fff”}]}
GeoJson的生成与解析一、wkt格式的geometry转成json格式二、json格式转wkt格式三、json格式的数据进行解析四、Java读写geojson五、geotools读取shp文件5.1 pom.xml5.2 读取shp文件六、Geotools中Geometry对象与GeoJson的相互转换6.1 pom.xmlimport包6.2 LineString–>geojson6....
geojsonio
将各种数据格式转换为GeoJSON或TopoJSON
该软件包是将地理数据转换为GeoJSON和TopoJSON格式的实用程序。 没有其他的。 我们希望很好地完成这一工作,并处理所有合理的用例。
该软件包中的功能首先围绕您正在使用或想要获得的内容(GeoJSON或TopoJSON)进行组织,然后转换为多种格式或从多种格式读取:
geojson_list() / topojson_list() -以R列表格式转换为GeoJSON / TopoJSON
geojson_json() / topojson_json() -转换为JSON的GeoJSON / TopoJS
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.geotools.data.DataUtilities;
import org.geotools.data.collection.ListFeatureCollection;
import org.geotool..
Geotools操作GeoJSON:解析FeatureCollection对象文件GeoJSON是基于JavaScript的对象的地理信息数据格式。GeoJSON格式示例:{
"type":"FeatureCollection",
"features":[
"type":"Feature",
"propertie...
在实际项目中,geojson格式的文件应用场景非常多,比如:shapefile转geojson,加载geojson数据到openlayers、leaflet等开源地图组件中 等,还有些情况下需要自己把一系列点生成面,然后把面再转成geojson,之后把生成的geojson格式文件提供给前端使用,这里以java为例,实现坐标点生成geojson格式的Polygon文件。
首先引入geotools相关jar包
<!-- geojson -->
GeoJSON是一种编码各种地理数据结构的格式。GeoJSON 是用 JSON 的语法表达和存储地理数据,可以说是 JSON 的子集。
GeoJSON总是由单个对象组成。此对象(以下称为GeoJSON对象)表示一个几何图形、特性或功能集合。
完整的GeoJSON数据结构始终是一个对象(用JSON术语来说)。在GeoJSON中,对象由名称和成员值成对的集合(也称为成员)组成。对于每个成员,名称总是一个字符串。成员值要么是字符串、数字、对象、数组,要么是文字之一:true,false,和nul.
package cn.cepec.talroad.air.common;
import cn.cepec.talroad.air.common.geoutil.FeaureUtil;
import cn.cepec.talroad.air.common.geoutil.GeoJSONUtil;
import com.vividsolutions.jts.geom.Geometry;
import net.sf.json.JSONObject;
import org.geotools.
多格式支持-仅一个包。
简单函数-用于from()和to()的不同格式的一致函数。
Promised-由本地Promise提供支持,很高兴与您选择的Promise库(Q,bluebird和Promise)一起工作。
GeoJson输入/输出-从文件中获取GeoJson并将其保存到您想要的任何文件中。
支持的格式
CSV(仅点数据)
KMZ(仅写)
形状文件
TopoJson(仅写)
gtran提供两种功能:每种支持格式的from [格式名称]()和to [格式名称]()。
来自[格式名称](文件名[,选项])
读取地理空间数据文件并返回GeoJson对象。
到[格式名称](geojson,文件名[,选项])
将GeoJson对象写入具有给定名称和格
Shp文件转换工具是一款将ship文件转换成GeoJson的工具,界面简洁,操作简单是一款非常实用的软件,需要的用户可以前来下载
Shp转geojson工具使用说明
Shp2GeoJson文件夹,运行Shp2GeoJson.exe,击打开按钮选择shp文件,后选择保存路径和保存文件名,保存完毕后即可关闭该程序。
很高兴回答你的问题!以下是示例代码,可以在 Android Studio 中使用 GeoTools 读取并显示 shape 文件:
首先,需要在项目的 build.gradle 文件中添加以下依赖项:
dependencies {
implementation 'org.geotools:gt-shapefile:23.2'
implementation 'org.geotools:gt-epsg-hsql:23.2'
implementation 'org.geotools:gt-geojson:23.2'
然后,在你的 Activity 或 Fragment 中,可以使用以下代码读取 shape 文件并将其显示在地图上:
```java
import org.geotools.data.shapefile.ShapefileDataStore;
import org.geotools.data.simple.SimpleFeatureCollection;
import org.geotools.data.simple.SimpleFeatureSource;
import org.geotools.geometry.jts.JTS;
import org.geotools.map.FeatureLayer;
import org.geotools.map.MapContent;
import org.geotools.styling.SLD;
import org.geotools.styling.Style;
import org.locationtech.jts.geom.Envelope;
import org.locationtech.jts.geom.Geometry;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import java.io.File;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
private MapContent mapContent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化地图内容
mapContent = new MapContent();
// 读取 shape 文件
File shapeFile = new File("/path/to/shapefile.shp");
ShapefileDataStore dataStore = null;
try {
dataStore = new ShapefileDataStore(shapeFile.toURI().toURL());
} catch (IOException e) {
e.printStackTrace();
// 获取 feature source 和 feature collection
SimpleFeatureSource featureSource = null;
SimpleFeatureCollection featureCollection = null;
try {
featureSource = dataStore.getFeatureSource();
featureCollection = featureSource.getFeatures();
} catch (IOException e) {
e.printStackTrace();
// 获取 feature type 和 geometry type
SimpleFeatureType featureType = featureSource.getSchema();
Class<?> geometryType = featureType.getGeometryDescriptor().getType().getBinding();
// 创建 feature layer 和 style
FeatureLayer featureLayer = new FeatureLayer(featureCollection, createStyle(geometryType));
mapContent.addLayer(featureLayer);
// 设置地图范围
Envelope envelope = featureCollection.getBounds();
mapContent.getViewport().setBounds(envelope);
// 获取地图视图并将其添加到布局中
MapView mapView = findViewById(R.id.map_view);
mapView.setMapContent(mapContent);
@Override
protected void onDestroy() {
super.onDestroy();
// 释放地图内容
mapContent.dispose();
private Style createStyle(Class<?> geometryType) {
// 根据几何类型创建默认样式
if (Geometry.class.isAssignableFrom(geometryType)) {
return SLD.createSimpleStyle(geometryType);
} else {
return null;
请注意,上述代码中的 `/path/to/shapefile.shp` 应替换为实际的 shape 文件路径。此外,还需要在布局文件中添加一个 MapView 控件:
```xml
<org.geotools.android.MapView
android:id="@+id/map_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
希望这可以帮助你实现在 Android Studio 中使用 GeoTools 读取并显示 shape 文件!