首页 > 编程语言 >Java如何自行实现正向地理编码算法(不依赖api,不联网)

Java如何自行实现正向地理编码算法(不依赖api,不联网)

时间:2024-04-12 18:14:02浏览次数:31  
标签:编码 Java 湖北省 aoi 江夏区 武汉市 api id gps

政务场景中经常会遇到地址落图,或者三维挂接的场景。如何将文本地址转化为gps坐标是实现要解决的核心问题。addresstool为正向地理编码提供了非常简单、高效的算法。

如何实现正向地理编码,只需要3步就行:
第一步:带有坐标的标准地址加载到addresstool中。
第二部:以业务地址作为参数,使用getStdAddress方法,获取该地址的所有信息。
第三步:从StandardAddress中取出gps坐标信息即可。

上代码

public class loadFromJsonTest {
    public static void main(String[] args) throws Exception {
        AddressTool ss = new AddressTool();
        DataTable as = new DataTable();
        as.loadFromJson("D:\\ideacode\\address\\src\\main\\resources\\","wuhan.json");
        System.out.println("用户地址 读取完毕!!! ");
        as.initData(ss);
        SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z");
        Date date1 = new Date(System.currentTimeMillis());
        System.out.print(formatter.format(date1));
        System.out.print("   ");
        System.out.println("用户地址 初始化完毕!!! ");

        Map<String,String> mp = new HashMap<>();
        // 忽略地理要素,被忽略的地理要素不会作为关键词进行关联匹配
//        mp.put("ignore","town,community");
        System.out.println(ss.getStdAddress("武汉市锦绣龙城"));
        System.out.println(ss.getStdAddress("湖北省武汉市江夏高新四路1号万科魅力之城",mp));
        System.out.println(ss.getStdAddress("湖北省武汉市江夏高新四路万科魅力之城"));
        System.out.println(ss.getStdAddress("武汉市魅力之城"));
        System.out.println(ss.getStdAddress("武汉市万科魅力"));



        Date date = new Date(System.currentTimeMillis());
        System.out.println(formatter.format(date));
        for(int i=0;i<50000;i++){
            ss.getStdAddress("湖北省武汉市江夏高新四路万科魅力之城");
        }
        date = new Date(System.currentTimeMillis());
        System.out.println(formatter.format(date));
        as.close();
    }
}

看效果

{linkLevel=aoi, list=[{latitude_gps=30.46429225, address=湖北省武汉市江夏区民族大道888号锦绣龙城, province=湖北省, city=武汉市, road=民族大道, road_no=888, county=江夏区, longitude_gps=114.3790618, aoi=锦绣龙城, id=2bb4da0a-0646-40a5-980b-820376f3b3db_aoi, type=aoi, aoi_id=2bb4da0a-0646-40a5-980b-820376f3b3db_aoi}, {latitude_gps=30.46865909, address=湖北省武汉市江夏区龙城路4号锦绣龙城, province=湖北省, city=武汉市, road=龙城路, road_no=4, county=江夏区, longitude_gps=114.3831422, aoi=锦绣龙城, id=144b0534-430e-4d1b-9d1b-d7038c77dbbd_aoi, type=aoi, aoi_id=144b0534-430e-4d1b-9d1b-d7038c77dbbd_aoi}, {near_roads=龙城路, latitude_gps=30.46772247, address=湖北省武汉市江夏区锦绣龙城, province=湖北省, city=武汉市, county=江夏区, longitude_gps=114.3786184, aoi=锦绣龙城, id=2b0ad511-2371-4eec-ace6-a9c87d68d388_aoi, type=aoi, aoi_id=2b0ad511-2371-4eec-ace6-a9c87d68d388_aoi}], addressLevel=aoi}
{linkLevel=aoi, list=[{latitude_gps=30.45163205, address=湖北省武汉市江夏区高新四路1号万科魅力之城, province=湖北省, city=武汉市, road=高新四路, road_no=1, county=江夏区, longitude_gps=114.4313855, aoi=万科魅力之城, id=f0c7c984-8725-4d0e-ad79-7786319511e9_aoi, type=aoi, aoi_id=f0c7c984-8725-4d0e-ad79-7786319511e9_aoi}], addressLevel=aoi}
{linkLevel=aoi, list=[{latitude_gps=30.45163205, address=湖北省武汉市江夏区高新四路1号万科魅力之城, province=湖北省, city=武汉市, road=高新四路, road_no=1, county=江夏区, longitude_gps=114.4313855, aoi=万科魅力之城, id=f0c7c984-8725-4d0e-ad79-7786319511e9_aoi, type=aoi, aoi_id=f0c7c984-8725-4d0e-ad79-7786319511e9_aoi}, {near_roads=中芯一路, latitude_gps=30.44874704, address=湖北省武汉市江夏区万科魅力之城, province=湖北省, city=武汉市, county=江夏区, longitude_gps=114.433457, aoi=万科魅力之城, id=e9715a29-910d-4337-bf73-1b31c6221172_aoi, type=aoi, aoi_id=e9715a29-910d-4337-bf73-1b31c6221172_aoi}], addressLevel=aoi}
{linkLevel=aoi, list=[{latitude_gps=30.45163205, address=湖北省武汉市江夏区高新四路1号万科魅力之城, province=湖北省, city=武汉市, road=高新四路, road_no=1, county=江夏区, longitude_gps=114.4313855, aoi=万科魅力之城, id=f0c7c984-8725-4d0e-ad79-7786319511e9_aoi, type=aoi, aoi_id=f0c7c984-8725-4d0e-ad79-7786319511e9_aoi}, {near_roads=中芯一路, latitude_gps=30.44874704, address=湖北省武汉市江夏区万科魅力之城, province=湖北省, city=武汉市, county=江夏区, longitude_gps=114.433457, aoi=万科魅力之城, id=e9715a29-910d-4337-bf73-1b31c6221172_aoi, type=aoi, aoi_id=e9715a29-910d-4337-bf73-1b31c6221172_aoi}], addressLevel=aoi}
{linkLevel=aoi, list=[{latitude_gps=30.45163205, address=湖北省武汉市江夏区高新四路1号万科魅力之城, province=湖北省, city=武汉市, road=高新四路, road_no=1, county=江夏区, longitude_gps=114.4313855, aoi=万科魅力之城, id=f0c7c984-8725-4d0e-ad79-7786319511e9_aoi, type=aoi, aoi_id=f0c7c984-8725-4d0e-ad79-7786319511e9_aoi}, {near_roads=中芯一路, latitude_gps=30.44874704, address=湖北省武汉市江夏区万科魅力之城, province=湖北省, city=武汉市, county=江夏区, longitude_gps=114.433457, aoi=万科魅力之城, id=e9715a29-910d-4337-bf73-1b31c6221172_aoi, type=aoi, aoi_id=e9715a29-910d-4337-bf73-1b31c6221172_aoi}], addressLevel=aoi}
2024-04-12 at 17:24:34 CST
2024-04-12 at 17:24:36 CST

其中latitude_gps、longitude_gps就是坐标信息,自己解析吧!

wuhan.json文件在gitee已提供,自行下载

java资源下载

https://download.csdn.net/download/u011024436/89035851

源码学习
https://gitee.com/addresstool/address

使用中有问题或者建议,欢迎联系邮箱[email protected]

标签:编码,Java,湖北省,aoi,江夏区,武汉市,api,id,gps
From: https://www.cnblogs.com/addresstool/p/18131852

相关文章

  • java 怎么把负数变正数
    java怎么把负数变正数Java中将负数变为正数可以通过以下几种方式实现:使用绝对值函数、使用三目运算符、使用位运算或者使用移位运算。下面将详细介绍这些方法。1.使用绝对值函数Java提供了Math类中的abs()方法,可以返回一个数的绝对值。使用该方法可以将负数转换为正数......
  • PSQL_标准API和Interface基本的用法和比较
      一、简介   1.API调用的6个参数    2.处理后错误信息的处理    3.API成功与否的判断依据    4.API和Interface的区别和优点 二. 具体分析1、API调用的6个参数        2. 处理后错误信息的处理IF(fnd_msg_pub.count_msg>0)THE......
  • java中cron表达式 每10分钟执行一次
    在Java中,可以使用Quartz框架来定义和调度任务,包括使用Cron表达式来定义任务的执行时间。下面是一个使用Quartz框架实现每10分钟执行一次任务的示例:添加Quartz依赖在Maven项目中,添加以下依赖到pom.xml文件中:<dependency><groupId>org.quartz-scheduler</groupId><arti......
  • bug记录:java.lang.UnsupportedOperationException: null
    java.lang.UnsupportedOperationException:null这个错一般是因为不支持的操作导致,即对象不支持某方法,显示抛出此异常。举个例子:Arrays.asList这个方法返回Arrays内部类ArrayList而不是java.util.ArrayList,而Arrays的内部类ArrayList是继承了AbstractList,AbstractList中的add、r......
  • Java策略模式实践
    1什么是策略模式策略模式(StrategyPattern):一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式定义了一系列算法或策略,并将每个算法封装在独立的类中,使得它们可以互相替换。通过使用策略模式,可以在运行时根据需要选择不同的算法,而不需要修改......
  • java + geotools 读写shp时,中文属性乱码问题
    创建时要注意 :  newDataStore.setCharset(Charset.forName("GBK"));代码如下:FilenewFile=newFile(filepath);Map<String,Serializable>params=newHashMap<>();params.put("url",newFile.toURI().toURL());params.put("createspati......
  • Java stream sorted使用 Comparator 进行多字段排序
    摘要:介绍使用JavaStream流排序器Comparator对List集合进行多字段排序的方法,包括复杂实体对象多字段升降序混合排序方法。综述​ Java8的Stream使用了函数式编程模式,人如其名,它可以被用来对集合或数组进行链状流式的排序、过滤和统计等操作,从而让我们更方便的对集合或数组......
  • “编码器UVW故障或内部故障”解决方法
    问题:如图,当驱动器报“编码器UVW故障或内部故障”时,确认编码器线缆连接正确,并且线缆没有问题之后,重启驱动器还是报错。解决方法:在“基本操作中”将“通讯编码器数据恢复1”设置为"10",然后重启即可此问题一般是在重设或者更换了电机型号之后出现。同时应该注意,如果你更换了新的......
  • Java 中文官方教程 2022 版(四十一)
    原文:docs.oracle.com/javase/tutorial/reallybigindex.html错误处理原文:docs.oracle.com/javase/tutorial/jaxp/limits/error.html建议应用程序在设置新属性时捕获org.xml.sax.SAXNotRecognizedException异常,以便应用程序在不支持这些属性的旧版本上正常工作。例如,可下载的......
  • Java 中文官方教程 2022 版(四十二)
    原文:docs.oracle.com/javase/tutorial/reallybigindex.html设置策略文件以授予所需的权限。原文:docs.oracle.com/javase/tutorial/security/toolsign/rstep3.html接下来,您将使用策略工具创建一个名为exampleraypolicy的策略文件,并在其中授予来自已签名JAR文件的代码权限......