任凭风浪起,稳坐钓鱼台 2019-11-08 17:17
浏览 153

有没有用java操作gis的大佬,如何求两个边界不一致的部分的,请教了!

1.我调用的jts api的symDifference方法

/**
* 各部门提交的本辖区行政边界是否一致,如不一致在系统中反馈出不一致的部分,
* 并通知相关辖区客户达成一致后进行修改;
*/
public static boolean regionCheck(String wellKnownText, List wellKnownTexts) throws ParseException {
//获取面
Polygon polygon = getPolygon(wellKnownText);
//边界
Geometry boundary = polygon.getBoundary();
for (String wkts : wellKnownTexts) {
Polygon polygon2 = getPolygon(wkts);
//getBoundary返回边界,如果Geometry 为空,则返回适当尺寸的空几何。
Geometry boundary2 = polygon2.getBoundary();
if (!boundary.equals(boundary2)) {
Geometry Geometry=polygon.symDifference(polygon2);
System.err.println(Geometry);
return false;
}
}
return true;
}
这是测试方法

@Test
public void regionCheck() {
String wkt = "POLYGON ((-224350635455.002197265625 -111836039853.78741455078125, -244254937379.54150390625 -107965758924.015777587890625, -257524471995.900909423828125 -104648375269.926025390625, -274664287542.031982421875 -99119402513.109375, -288486719434.072998046875 -98566505237.427764892578125, -300650459499.06939697265625 -100778094340.154388427734375, -319209182509.980224609375 -120093567998.94781494140625, -326636631456.106689453125 -184818480243.764556884765625, -334930090591.3314208984375 -281575503488.0526123046875, -190071004362.740203857421875 -325254388266.902587890625, -60140144577.55352783203125 -266094379768.966400146484375, -72732287430.19964599609375 -198319022650.31201171875, -78938651950.729461669921875 -164914178319.225250244140625, -180200885637.218505859375 -109383275975.02154541015625, -224350635455.002197265625 -111836039853.78741455078125))";
//String wkt1 = "LINESTRING (35510272.308399997651577 221713.426899999380112, 35510586.63400000333786 221877.468800000846386)";
List list = new ArrayList<>();
list.add("POLYGON ((-60140144577.55352783203125 -266094379768.966461181640625, -78938651950.729461669921875 -164914178319.225250244140625, -180200885637.218505859375 -109383275975.02154541015625, -181777545227.515472412109375 -108518656199.69744873046875, -315025788666.7921142578125 -83638278794.02349853515625, -319209182509.98016357421875 -120093567998.94781494140625, -326636631456.10675048828125 -184818480243.764556884765625, -334930090591.3314208984375 -281575503488.0526123046875, -190071004362.740203857421875 -325254388266.902587890625, -60140144577.55352783203125 -266094379768.966461181640625))");
try {
boolean b = checkedUtil.regionCheck(wkt, list);

    } catch (ParseException e) {
        e.printStackTrace();
    }

}

    这是执行后得到的结果

    MULTIPOLYGON (((-224350635455.0022 -111836039853.78741, -244254937379.5415 -107965758924.01578, -257524471995.9009 -104648375269.92603, -274664287542.03198 -99119402513.10938, -288486719434.073 -98566505237.42776, -300650459499.0694 -100778094340.15439, -319209182509.98016 -120093567998.94774, -315025788666.7921 -83638278794.0235, -181777545227.51547 -108518656199.69745, -180200885637.2185 -109383275975.02155, -224350635455.0022 -111836039853.78741)), ((-322907561014.1465 -152322294963.8256, -319209182509.9802 -120093567998.94781, -319209182509.98016 -120093567998.94774, -319209182509.98016 -120093567998.94781, -322907561014.1465 -152322294963.8256)), ((-322907561014.1465 -152322294963.8256, -326636631456.1067 -184818480243.76456, -334930090591.3314 -281575503488.0526, -326636631456.10675 -184818480243.76456, -322907561014.1465 -152322294963.8256)), ((-190071004362.7402 -325254388266.9026, -60140144577.553535 -266094379768.9664, -60140144577.55353 -266094379768.96646, -190071004362.7402 -325254388266.9026)), ((-78938651950.72946 -164914178319.22525, -72732287430.19965 -198319022650.312, -60140144577.55353 -266094379768.9664, -60140144577.553535 -266094379768.9664, -78938651950.72946 -164914178319.22525)))

    可是测试的这两个面是用argis画的,不一致的部分也只有一个面呀

    实在没招了,求大佬指教
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
    • ¥15 让node服务器有自动加载文件的功能
    • ¥15 jmeter脚本回放有的是对的有的是错的
    • ¥15 r语言蛋白组学相关问题
    • ¥15 Python时间序列如何拟合疏系数模型
    • ¥15 求学软件的前人们指明方向🥺
    • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
    • ¥20 双层网络上信息-疾病传播
    • ¥50 paddlepaddle pinn
    • ¥20 idea运行测试代码报错问题