当前位置: 首页 > wzjs >正文

坪山做网站互联网舆情

坪山做网站,互联网舆情,免费找工程项目承包软件,web网站开发的基本流程前言使用GeoTools开发时有必要了解其工厂设计模式,作为软件开发核心设计模式,其设计思想具有普遍性和研究性。明白方法原理有助于提高开发效率,达到事半功倍的效果。1. 工厂模式 工厂模式(Factory Pattern)是面向对象中…

前言

使用GeoTools开发时有必要了解其工厂设计模式,作为软件开发核心设计模式,其设计思想具有普遍性和研究性。明白方法原理有助于提高开发效率,达到事半功倍的效果。

1. 工厂模式

工厂模式(Factory Pattern)是面向对象中编程中最常用的设计模式之一,使用工厂不仅可以批量创建对象,而且创建对象的过程与使用对象的过程分离。有利于降低代码的耦合度。

GeoTools的设计也采用了工厂设计模式的思想,用于创建地理空间数据处理中的各种对象。使得其面对各种地理数据格式时,可以灵活拓展。

下面介绍以下GeoTools中常见的工厂模型,主要包括数据存储工厂、几何对象工厂以及坐标系工厂等。

2. 数据存储工厂

GeoTools 数据存储工厂非常丰富,主要包括数据库存储工厂和文件存储工厂两大类,基本都存储处 org.geotools.data目录下。

(1)DataStoreFactory可以用于连接各种数据源,如数据库和文件。

  • 连接数据库:
// 连接PostGIS数据库
Map<String, Object> pgParams = new HashMap<>();
pgParams.put(PostgisNGDataStoreFactory.DBTYPE.key, "postgis");
pgParams.put(PostgisNGDataStoreFactory.HOST.key, "localhost");
pgParams.put(PostgisNGDataStoreFactory.PORT.key, "5432");
pgParams.put(PostgisNGDataStoreFactory.DATABASE.key, "geodata");
pgParams.put(PostgisNGDataStoreFactory.USER.key, "postgres");
pgParams.put(PostgisNGDataStoreFactory.PASSWD.key, "123456");
pgParams.put(PostgisNGDataStoreFactory.SCHEMA.key, "public"); // 明确指定schema
pgParams.put(PostgisNGDataStoreFactory.EXPOSE_PK.key, true);  // 暴露主键// DataStoreFinder 自动发现对应工厂
DataStore pgDataStore = DataStoreFinder.getDataStore(pgParams);
  • 连接文件:
String provinceLocation = "E:\data\基础数据\行政区\省级行政区\省级行政区\省.shp";
File file = new File(provinceLocation);// 创建 Shapefile 存储器
Map<String, Object> params = new HashMap<>();
params.put("url", file.toURI().toURL());
params.put("charset", "UTF-8");// DataStoreFinder 自动发现对应工厂
DataStore dataStore = DataStoreFinder.getDataStore(params);

也可以用使用FileDataStore dataStore = FileDataStoreFinder.getDataStore(file);

(2)ShapefileDataStoreFactory用于创建Shapefile存储器。

// 创建 Shapefile 存储器
Map<String, Object> params = new HashMap<>();
params.put("url", file.toURI().toURL());
params.put("charset", "UTF-8");ShapefileDataStoreFactory dataStoreFactory = new ShapefileDataStoreFactory();
ShapefileDataStore dataStore =  (ShapefileDataStore) dataStoreFactory.createDataStore(params);

(3)PostgisNGDataStoreFactory用于创建PostGIS空间数据库连接。

// 连接PostGIS数据库
Map<String, Object> pgParams = new HashMap<>();
pgParams.put(PostgisNGDataStoreFactory.DBTYPE.key, "postgis");
pgParams.put(PostgisNGDataStoreFactory.HOST.key, "localhost");
pgParams.put(PostgisNGDataStoreFactory.PORT.key, "5432");
pgParams.put(PostgisNGDataStoreFactory.DATABASE.key, "geodata");
pgParams.put(PostgisNGDataStoreFactory.USER.key, "postgres");
pgParams.put(PostgisNGDataStoreFactory.PASSWD.key, "123456");
pgParams.put(PostgisNGDataStoreFactory.SCHEMA.key, "public"); // 明确指定schema
pgParams.put(PostgisNGDataStoreFactory.EXPOSE_PK.key, true);  // 暴露主键// DataStoreFinder 自动发现对应工厂
DataStore pgDataStore = DataStoreFinder.getDataStore(pgParams);
if (pgDataStore == null) {PostgisNGDataStoreFactory factory = new PostgisNGDataStoreFactory();if (!factory.canProcess(params)) {System.err.println("数据库参数不满足工厂要求");}if (!factory.isAvailable()) {System.err.println("数据库工厂类不可用");}throw new RuntimeException("数据库连接失败,请检查?");
}

3. 几何对象工厂

GeometryFactory 用来为要素创建几何属性,如点、线、面对象。

GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
// 构造点
Point point = geometryFactory.createPoint(new Coordinate(longitude,latitude));

4. 坐标系工厂

CRSFactory工厂用于创建坐标参考系统。

// 获取数据源坐标系统
CoordinateReferenceSystem crs = schema.getCoordinateReferenceSystem();// 获取地图坐标系统
CoordinateReferenceSystem mapCrs  = map.getCoordinateReferenceSystem();// 定义坐标系统
CoordinateReferenceSystem wgs84 = CRS.decode("EPSG:4326");

5. 样式工厂

StyleFactory工厂用于创建图层样式

StyleFactory style = CommonFactoryFinder.getStyleFactory();
// 创建红色填充
Fill fill = style.createFill(ff.literal(Color.RED));

6. 过滤器工厂

FilterFactory工厂用于创建数据过滤条件,通常用于空间查询

// 创建数据过滤器
FilterFactory factory = CommonFactoryFinder.getFilterFactory(null);
// 获取几何属性字段名称
String geometryPropertyName = featureSource.getSchema().getGeometryDescriptor().getLocalName();Filter filter = null;
switch (queryType.toLowerCase()) {case "intersects":filter = factory.intersects(factory.property(geometryPropertyName),factory.literal(geometry));break;case "contains":filter = factory.contains(factory.property(geometryPropertyName),factory.literal(geometry));break;case "disjoint":filter = factory.disjoint(factory.property(geometryPropertyName),factory.literal(geometry));break;
}
http://www.dtcms.com/wzjs/259287.html

相关文章:

  • 网站建设提供了哪些栏目seo属于什么职业部门
  • 做的比较好的二手交易网站在哪里查关键词排名
  • 上海模板网建站seo自然搜索优化排名
  • 网页设计网站制作视频教程网络营销的主要传播渠道
  • 怎样把做的网站上传到github软文宣传推广
  • 湛江专业建站邳州网站开发
  • 网站开发下载seo的工作流程
  • 深圳网站制作 公司百度指数是什么
  • 微信小程序怎么做网站链接信息如何优化上百度首页公司
  • 网站备案许可证号查询深圳网站开发
  • wordpress 搬家后404长沙seo推广外包
  • 重庆网站推广外包企业促销活动推广语言
  • 做网站投资多少钱郑州百度seo网站优化
  • 网站建设公司net2006推广运营
  • 注册科技有限公司可以做网站吗企业培训考试app
  • 制作网页的网站推荐seo网站系统
  • 网站自定义错误页面模板杭州优化外包哪里好
  • 网站备案单位查询郑州seo排名哪有
  • 做化妆品等的网站软文例文 经典软文范例
  • 重庆品牌营销型网站建设怎么做信息流广告代理商
  • 山东公司注册网站阿里大数据官网
  • 郑州网站建设报价世界网站排名查询
  • 有微重庆网站吗代写文章
  • wordpress 主题新建页面班级优化大师免费下载
  • 大兴网站建设报价长沙百度百科
  • 常熟有做网站的网络公司吗免费视频网站推广软件
  • 网站建设的主要缺陷济南seo优化公司
  • 百度网站分析报告宁波网络优化seo
  • 加强政府网站安全建设的思考谷歌应用商店app下载
  • 铜川免费做网站公司武汉seo广告推广