geotool查询过程-创新互联

geotool查询过程:
  1,建立数据源(数据库操作对象)
  2,从数据库对象中获取所有的表名
  3,根据表名和表的几何类型生成数源的字段承接对象
  4,把生成的承接对象赋值给数据源-----正式完成数据源的准备
  5,构建查询对象
  6,调用查询接口
  
  
DataStore datastore = DataStoreFinder.getDataStore(params) ---finder得物---数据库连接池(对某一数据库的)
private DataStore getDataStore(DataType dataType) throws IOException {
  DataStore datastore = dataStoreMap.get(dataType.name());
  //createDataStore
  if (null == datastore) {
  Mapparams = new HashMap<>();
  params.put("hbase.catalog", dataType.name());---数据库名
  params.put("hbase.zookeepers", zookeepers);
  datastore = DataStoreFinder.getDataStore(params);
  dataStoreMap.put(dataType.name(), datastore);
  }
  return datastore;
  }
 typeNames =  datastore.getTypeNames()---数据库中所有表名
 datastore.getSchema(typeName)---表的字段在geotool承接对象
 
 
 
 
 //获取字段在geojson中用来承接的实体. 生产表的承接对象
  default SimpleFeatureType getSimpleFeatureType(DataType dataType, String layer, GeometryType geomType) throws GeomesaException {
  SimpleFeatureType sft = SimpleFeatureTypes.createType(layer, String.format(dataType.getSchema(), geomType.name()));
  if (sft == null) {
  throw new GeomesaException("cannot create simpleFeatureType with dataType schema:" + dataType.getSchema() );
  }
  sft.getUserData().put(SimpleFeatureTypes.DEFAULT_DATE_KEY, "dtg");
  sft.getUserData().put("geomesa.mixed.geometries", true);
  return sft;
  }
  
 default SimpleFeatureType getSft(ConcurrentHashMapsftMap, DataType dataType, DataLayer layer) throws GeomesaException {
  SimpleFeatureType sft = sftMap.get(dataType.name() + layer.getName());
  if (sft == null) {
  sft = getSimpleFeatureType(dataType, layer.getName(), layer.getGeometryType());
  sftMap.put(dataType.name() + layer.getName(), sft);
  }
  return sft;
  }

 
  
  
  //把geotool生成的表字段承接对象注入数据源,数据源会根据已经收集的承接对象自动选择承接结果集
getSchema(typeName, datastore, sft);  
default void createSchema(DataStore datastore, SimpleFeatureType sft) throws IOException {
  System.out.println("Creating schema: " + DataUtilities.encodeType(sft));
  datastore.createSchema(sft);
  }
  
  

Query query = new Query(typeName, ECQL.toFilter(condition), DEFAULT_FIELDS);--查询传入表名和条件即可
FeatureReaderreader = datastore.getFeatureReader(query, Transaction.AUTO_COMMIT);
 
 

创新互联公司是一家专注网站建设、网络营销策划、小程序开发、电子商务建设、网络推广、移动互联开发、研究、服务为一体的技术型公司。公司成立十年以来,已经为近千家围栏护栏各业的企业公司提供互联网服务。现在,服务的近千家客户与我们一路同行,见证我们的成长;未来,我们一起分享成功的喜悦。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享名称:geotool查询过程-创新互联
网站路径:http://cdiso.cn/article/dgshgd.html

其他资讯