首页 / 浏览问题 / 组件GIS / 问题详情
BDT创建网格,长宽100*100,但面积却不是10000
16EXP 2023年09月18日
我在使用BDT的方法 BuildRegionGrid.apply()创建网格,长宽设置为100*100.创建出的网格结果用CalculateArea.apply()计算面积。结果却不是10000,而是8058左右。

使用GP工具创建网格,计算面积也会有这种情况。

这种情况看起来不太合理。

1个回答

您好,您那边看下代码是怎么写的呢?我这边测试正常,可以参考下我的代码:

val params2 = new util.HashMap[String, java.io.Serializable]()
params2.put("providerType", "Shape")//引擎类型的唯一标识
params2.put("path", "D:\\zp\\test\\")
val shpProvider = new ShapeFileFeatureRDDProvider()
val rdd = shpProvider.rdd(new Configuration(), sc, params2, new Query("地上建筑基底_DZBP"))
val type2 = new SimpleFeatureTypeBuilder()
type2.setName("test")
type2.add("geometryType", classOf[Polygon])
type2.add("col",classOf[String])
type2.setDefaultGeometry("geometryType")
val featureType = type2.buildFeatureType
val featureRDD =FeatureRDD.apply(rdd,featureType,true)
val d = BuildRegionGrid.apply(featureRDD, new Distance(100,BDTUnit.apply("meter")), new Distance(100,BDTUnit.apply("meter")), null, "", null, false)
val d1 = CalculateArea.apply(d, "area", false, false)
val udbPath = "F:\\重点客户数据\\SampleData\\China\\China100\\China.udb"
val params = new util.HashMap[String, java.io.Serializable]()
params.put(SDXFeatureRDDProviderParams.DBType.key, "UDB") //设置读取的引擎,支持UDB、UDBX
params.put(SDXFeatureRDDProviderParams.Server.key, udbPath)
params.put(SDXFeatureRDDProviderParams.Alias.key, "test")
params.put(SDXFeatureRDDProviderParams.NumPartitions.key, 4)
params.put(FeatureRDDProviderParams.ProviderType.key, "SDX")
FeatureRDDProviderFactory(params).save(d1, params,"L20221101333")

结果如图:

9,237EXP 2023年09月19日
...