geotools读取shp文件及shp文件操作工具类代码.pdf

完整文档下载地址

https://download.csdn.net/download/a772304419/17468931

import com.lzugis.helper.CommonConfig;
import com.vividsolutions.jts.geom.*;
import com.vividsolutions.jts.io.WKTReader;
import com.vividsolutions.jts.io.WKTWriter;
import org.geotools.data.shapefile.ShapefileDataStore;
import org.geotools.data.simple.SimpleFeatureCollection;
import org.geotools.data.simple.SimpleFeatureIterator;
import org.geotools.data.simple.SimpleFeatureSource;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opengis.feature.simple.SimpleFeature;import java.util.*;import java.nio.charset.*;
import java.io.*;/*** Created by admin on 2017/11/20.*/
public class ShpUtil {private String shpRoot;private GeometryFactory geometryFactory;private WKTReader wktReader;private WKTWriter wktWriter;public ShpUtil(){super();shpRoot = CommonConfig.getVal("geocode.shproot");geometryFactory = JTSFactoryFinder.getGeometryFactory( null );wktReader = new WKTReader( geometryFactory );wktWriter = new WKTWriter();}/*** 获取所有的shp文件* @return*/public List listShapeFiles(){List<String> result = new ArrayList<String>();File file = new File(shpRoot);if (!file.isDirectory()) {System.out.println(file.getAbsolutePath());result.add(file.getAbsolutePath());} else {File[] directoryList = file.listFiles(new FileFilter() {public boolean accept(File file) {if (file.isFile() && file.getName().endsWith(".shp")) {return true;} else {return false;}}});for (int i = 0; i < directoryList.length; i++) {result.add(directoryList[i].getPath());}}return result;}/*** 获取shp的features* @param shpPath* @return*/public List<SimpleFeature> getShapeFeatures(String shpPath){List<SimpleFeature> features = new ArrayList<SimpleFeature>();try {//初始化shapeFile file = new File(shpPath);ShapefileDataStore shpDataStore = null;shpDataStore = new ShapefileDataStore(file.toURL());//设置编码Charset charset = Charset.forName("GBK");shpDataStore.setCharset(charset);String typeName = shpDataStore.getTypeNames()[0];SimpleFeatureSource featureSource = null;featureSource = shpDataStore.getFeatureSource(typeName);SimpleFeatureCollection result = featureSource.getFeatures();SimpleFeatureIterator itertor = result.features();while (itertor.hasNext()) {SimpleFeature feature = itertor.next();features.add(feature);}itertor.close();}catch (Exception e){e.printStackTrace();}return features;}/*** 获取feature信息* @param feature* @return*/public Object[] getFeatureInfo(SimpleFeature feature){String geomType = getGeomtype(feature);if(geomType.indexOf("polygon")!=-1){return getPolygonInfo(feature);}else if(geomType.indexOf("polyline")!=-1){return getPolylineInfo(feature);}else{return getPointInfo(feature);}}/*** 获取geometry类型* @param feature* @return*/public String getGeomtype(SimpleFeature feature){Geometry geom = (Geometry)feature.getAttribute("the_geom");return geom.getGeometryType().toLowerCase();}/*** 获取多边形的信息* 顺序为:id, pointsnum, areaname, minx, miny, maxx, maxy,*         minzoom, maxzoom, pointsdata* @param feature* @return*/private Object[] getPolygonInfo(SimpleFeature feature){Geometry geom = (Geometry)feature.getAttribute("the_geom");String id = UUID.randomUUID().toString();int pointsnum = geom.getNumPoints();String areaname = feature.getAttribute("areaname").toString();int minzoom = null==feature.getAttribute("minzoom")?0:(Integer) feature.getAttribute("minzoom"),maxzoom = null==feature.getAttribute("maxzoom")?21:(Integer) feature.getAttribute("maxzoom");Envelope envelope = geom.getEnvelopeInternal();String pointsdata = wktWriter.write(geom);return new Object[]{id,pointsnum,areaname,envelope.getMinX(),envelope.getMinY(),envelope.getMaxX(),envelope.getMaxY(),minzoom, maxzoom,pointsdata};}/*** 获取线的信息* 顺序为:"id", "pointsnum", "linetype", "linename","minx", "miny", "maxx", "maxy", "minzoom", "maxzoom", "pointsdata"* @param feature* @return*/private Object[] getPolylineInfo(SimpleFeature feature){Geometry geom = (Geometry)feature.getAttribute("the_geom");String id = UUID.randomUUID().toString();int pointsnum = geom.getNumPoints();String linename = feature.getAttribute("linename").toString();int minzoom = null==feature.getAttribute("minzoom")?0:(Integer) feature.getAttribute("minzoom"),maxzoom = null==feature.getAttribute("maxzoom")?21:(Integer) feature.getAttribute("maxzoom"),linetype = null==feature.getAttribute("linetype")?0:(Integer) feature.getAttribute("linetype");Geometry envelope = geom.getEnvelope();Coordinate[] coordinates =  envelope.getCoordinates();Coordinate min = coordinates[0],max = coordinates[1];String pointsdata = wktWriter.write(geom);return new Object[]{id,pointsnum,linetype,linename,min.x, min.y, max.x, max.y,minzoom, maxzoom,pointsdata};}/*** 获取点的信息* 顺序为:"id", "poiname","x", "y", "minzoom", "maxzoom"* @param feature* @return*/private Object[] getPointInfo(SimpleFeature feature){GeoHash geohash = new GeoHash();Point geom = (Point)feature.getAttribute("the_geom");String id = UUID.randomUUID().toString();String poiname = feature.getAttribute("poiname").toString();int minzoom = null==feature.getAttribute("minzoom")?0:(Integer) feature.getAttribute("minzoom"),maxzoom = null==feature.getAttribute("maxzoom")?21:(Integer) feature.getAttribute("maxzoom");String strGeohash = geohash.encode(geom.getY(), geom.getX(), 0);return new Object[]{id,poiname,geom.getX(),geom.getY(),minzoom,maxzoom,strGeohash};}
}

geotools读取shp文件及shp文件操作工具类代码相关推荐

  1. 自定义数组操作工具类代码示例

    自定义一个操作数据的工具类,其实工具类的编写很简单,将方法静态化,将构造方法私有化就可以了. 工具类代码: class MyArrays{private MyArrays() {}/** 返回数组中最 ...

  2. java使用geotools读取shp文件

    java使用geotools读取shp文件 测试shp文件 引入geotools包 压缩包文件处理 shp文件相关信息的读取 运行结果 GeoTools是一个开源的Java GIS工具包,可利用它来开 ...

  3. GeoJson的生成与解析,JSON解析,Java读写geojson,geotools读取shp文件,Geotools中Geometry对象与GeoJson的相互转换

    GeoJson的生成与解析 一.wkt格式的geometry转成json格式 二.json格式转wkt格式 三.json格式的数据进行解析 四.Java读写geojson 五.geotools读取sh ...

  4. GeoTools读取shp文件中文乱码解决方案汇总

    Java在GeoTools组件读取Shp文件属性乱码问题,解决汇总(持续更新,暂时没有完美解决方案) GeoTools组件在读取Shp文件的属性表信息时,当读取到中文字符时,在代码中的显示为乱码. 问 ...

  5. python OGR库读取矢量文件——OGR shp操作

    from osgeo import ogr# **注释** layer: 图层(整体)# feature:图层中的要素(整体下的每个图层)## 一 ```python# 输入shp文件路径 inshp ...

  6. Java使用GeoTools读取shapefile文件

    文章目录 1.配置Maven仓库地址 2.引入pom依赖 3.创建与shape文件映射的实体类 4.创建读取ShapeFile的工具类 5.使用详解 1.配置Maven仓库地址 <reposit ...

  7. JAVA实现shp文件转wkb文件

    时间:2019年11月16日 23:39:38 Java实现shp文件转wkb文件 这是作者在工作中遇到的问题,希望能给大家一点参考价值 文章代码所需包和地址如下,其中 geotools 的地址必须是 ...

  8. 【ArcGIS微课1000例】0014:ArcGIS中如何将kml(kmz)文件转shp,并进行投影转换?

    KML(Keyhole Markup Language,Keyhole 标记语言)最初是由Google 旗下的Keyhole 公司开发和维护的一种基于XML 的标记语言,利用XML 语法格式描述地理空 ...

  9. php能打开.shp文件吗,shp文件是什么格式的

    shape文件由ESRI开发,一个ESRI的shape文件包括一个主文件,一个索引文件,和一个dBASE表.其中主文件的后缀就是[.shp]. 本文操作环境:Windows7系统,Dell G3电脑. ...

最新文章

  1. 除了密钥,公有云还有哪些安全保护方式
  2. Delphi设置表格样式
  3. C语言补漏(1)--- char到int赋值的一个陷阱
  4. spring mvc学习(4):第一个spring mvc项目
  5. 不同网段的PC与交换机的原理
  6. html禁止页面动画,如何在页面加载时阻止CSS动画?
  7. 解决阿里云无法正常使用samba的问题
  8. oracle取差集效率如何,Oracle Minus 取差集
  9. vue 自定义标签页
  10. 使用fsck修复损坏磁盘
  11. 模态逻辑(2)—— 模态逻辑基本概念
  12. 实战7:机器学习实战之 随机森林、逻辑回归、SVM算法方法进行垃圾邮件过滤分类 代码+数据
  13. 雷军北大15分钟演讲:我至少有胆量去想
  14. Linux常用命令之Linux常用命令实战知识点
  15. mybatis-plus修改和批量修改
  16. openwrt双wan环境搭建以及适配UPnP
  17. 广告营销场景下的隐私计算实践:阿里妈妈营销隐私计算平台SDH
  18. GaitSet论文复现中遇到的部分问题解决(CASIA-B数据集)
  19. Jenkins 自动化测试部署流程
  20. 快速恢复三菱M70,M80绝对位置。驱动电池没电丢零点后,重 设零点一时爽,要调换刀点和分中对刀时可就呵呵呵了

热门文章

  1. erlang精要(9)-erl(1)
  2. 【数据竞赛】可能是全网特征工程实操最通透的...
  3. 【机器学习】中国大学慕课《机器学习》课后习题(二)(回归)
  4. 【机器学习基础】用Python构建和可视化决策树
  5. 【Python基础】盘点 Python 10 大常用数据结构(上篇)
  6. 万字长文带你一览ICLR2020最新Transformers进展(上)
  7. 机器学习初学者公众号下载资源汇总(一)
  8. 『PPYOLO tiny尝鲜』基于PaddleDetection的人脸疲劳检测
  9. 神经网络十大学习率衰减提效策略
  10. 最萌办公室采访 | 网易程序员灵魂大拷问(文末有福利)