实现输入地址地标转换为其经纬度

本文链接:地理编码

作者: 狐狸家的鱼

Github: 八至

一、地理编码

1、地理编码含义

地址编码(或地理编码)是使用地址中包含的信息来插入地图上的相应位置的过程。使用参考数据源(称为定位器),ArcGIS通过将输入地址与要素属性进行匹配来查找地图位置。

通俗的说就是:地理编码采用地址或地名,并将其转换为实际坐标。

与此相关的反向地理编码,类似于地理编码,它只是找到与给定地图坐标相关的最近地址或地名,而不是找到与特定地址或地名相关联的坐标。

2、定位器

地理编码的基本逻辑内置于定位器中,而不是来自ArcGIS Runtime SDK代码。

定位器(使用ArcGIS Desktop创建)是地理编码过程中的主要组件,包含执行地址匹配所需的所有数据。

定位器基于特定的地址定位器样式创建,该样式指示预期的地址输入类型以及将如何执行匹配。

在使用定位器时,需要调用ArcGIS World地理编码服务(https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer)

更多常用定位器样式可以参考。

3、地址

地址是地理编码的基础,由一个或多个地址元素组成,地址元素有助于地理编码搜索,精确定位到特定位置的地址。

进行地理编码时,可以传入地址的各个组件,或者将所有信息作为要解析的单个字符串提供。定义地址的每个组件可以提供更多控制,但可能要求在将组件传递给定位器之前解析组件,或者为用户提供其他UI控件以输入每条信息。

进行地理编码时,输入地址中预期的信息类型由正在使用的定位器配置的地址样式确定。

一些常用地址组件字段名称,如:

  • 地址 - 门牌号码和街道
  • 邻里 - 城市的细分(不用于美国地址)
  • 城市或市政府
  • 次区域 - 行政区域,如县或省(不用于美国或墨西哥地址)
  • 地区 - 与地址相关的最大行政边界(美国的州名)
  • 邮政邮政编码
  • CountryCode-国家/地区的名称或ISO代码

更多可以参考地理编码字段输入

4、结果

特定地址的地理编码结果称为候选,根据输入地址的具体和完整程度,可以从地理编码操作中获得几个候选项。地理编码结果按照匹配的质量排序,因此第一个候选人通常是最好的。可以通过指定要包括在结果中的补充输出字段来获得附加候选信息。

一、实现

在ArcGIS for QML API参考文档中查询地理编码Geocode可以得到三个类型:GeocodeParameters(地理编码参数)、GeocodeResult(地理编码结果)、ReverseGeocodeParameters(反向地理编码参数),这三个都是在LocatorTask任务下进行的。

1、LocatorTask

LocatorTask是地理编码和反向地理编码的任务,支持在线和离线功能。

地理编码采用地址或地名,并将其转换为实际坐标,但必须首先进行地理编码以将其书面描述或地址转换为一组可以放在地图上的真实世界坐标。

地址定位器来使用LocatorTask进行地理编码。

LocatorTask是异步执行。成功执行会返回GeocodeResult列表,包含有关匹配记录的详细信息。还支持意见,这使开发人员能够显示来自定位器自动生成的建议,基于什么用户在搜索框中键入了。

2、定位器组件

界面代码:

MyTextField{//搜索框
id:searchBox;
width: 280;
focus: true;
Keys.enabled: true;
placeholderText: "Please enter landmark";
//Keys.onReturnPressed:
Rectangle{
anchors{
right: parent.right;
top:parent.top;
bottom: parent.bottom;
margins: 5;
}
width: 35;
color: "transparent";
Image {//搜索
anchors.centerIn: parent;
width: 30;
height: width;
source: "../../Images/find.png";
visible: searchBox.text.length === 0;
MouseArea{
anchors.fill: parent;
onClicked: {
searchBox.focus = true;
}
}
}
}
Image {//清除
anchors{
right: parent.right;
top:parent.top;
bottom: parent.bottom;
margins: 5;
}
width: 27;
height: width;
source: "../../Images/closeclear.png";
visible: parent.text.length !== 0;
MouseArea{
anchors.fill:parent;
onClicked: {
searchBox.text = "";
coordinateShow.text = "";
}
}
}
Keys.onReturnPressed: {
geocodeAddress(searchBox.text);
}
}
}
Row{//label
anchors.horizontalCenter: parent.horizontalCenter;
MyText{text: "The latitude and longitude:";fontSize: s;fontColor: b1;}
}
Row{//经纬度显示
anchors.horizontalCenter: parent.horizontalCenter;
MyText{id:coordinateShow;text: "";}
}

作者:狐狸家的鱼

本文链接:https://www.cnblogs.com/suRimn/p/9963221.html

声明:如需转载请联系作者或者附上原文链接

ArcGIS for qml - 地址地标转换为经纬度(地理编码)的更多相关文章

  1. AJ学IOS 之CoreLocation地理编码小Demo输入城市得到经纬度

    AJ分享,必须精品 一:效果 输入地名,可以得到相应的经纬度,知识为了学习写的小Demo 二:实现步骤 一 :首先获取用户输入的位置. 二 :创建地理编码对象. 三 :利用地理编码对象编码,根据传入的 ...

  2. iOS地图 -- 地理编码和反地理编码

    地理编码和反地理编码 用到的类和方法 CLGeocoder --> 地理编码管理器 - (void)geocodeAddressString:(NSString *)addressString ...

  3. 【iOS】7.4 定位服务->2.1.3.2 定位 - 官方框架CoreLocation 功能2:地理编码和反地理编码

    本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...

  4. 【Android】3.11 地理编码功能

    分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 一.简介 地理编码指的是将地址信息建立空间坐标关系的过程,提供了地理坐标和地址之间相互转换的能力. 地理编码分 ...

  5. 基于CLGeocoder - 地理编码

    iOS中CoreLocatio框架中的CLGeocoder为我们提供了地理编码方法: 首先需要导入框架 #import <CoreLocation/CoreLocation.h> 地理编码 ...

  6. Geocoding Tools(地理编码工具)

    地理编码工具 # Process: 创建地址定位器 arcpy.CreateAddressLocator_geocoding("", "", "&qu ...

  7. iOS之获取经纬度并通过反向地理编码获取详细地址

    _locationManager = [[CLLocationManager alloc] init]; //期望的经度 _locationManager.desiredAccuracy = kCLL ...

  8. 猫猫学iOS 之CoreLocation反地理编码小Demo输入经纬度得到城市

    猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:效果 输入经纬度,能够得到相应的地名 二:思路 跟地里编码差 ...

  9. ArcGIS api for javascript——地理编码任务-反向地理编码

    描述 反向地理编码确定地图上给出点的地址.本例展示了如何通过ArcGIS JavaScript API做反向地理编码. 反向地理编码和常规的地理编码请求都使用Locator类和ArcGIS Serve ...

随机推荐

  1. mybatis二级缓存详解

    1  二级缓存简介 二级缓存是在多个SqlSession在同一个Mapper文件中共享的缓存,它是Mapper级别的,其作用域是Mapper文件中的namespace,默认是不开启的.看如下图: 1. ...

  2. day 7-17 多表查询

    一. 准备表 #部门表 create table dep( id int, name varchar(20) ); #员工表 create table emp( id int primary key ...

  3. 转《基于Ionic3实现微信支付和支付宝支付》

    在Ionic应用里实现支付并不难,但是有的坑真是不爬不知道. 一:支付宝支付 网上关于支付宝支付cordova插件真是非常多,但是大多会报一些让你很无语的错误.比如sdk早已过时不是最新的,或者没有出 ...

  4. Codeforces 1154F Shovels Shop

    题目链接:http://codeforces.com/problemset/problem/1154/F 题目大意: 商店有n把铲子,欲购k把,现有m种优惠,每种优惠可使用多次,每种优惠(x, y)表 ...

  5. tensorflow实现基于LSTM的文本分类方法

    tensorflow实现基于LSTM的文本分类方法 作者:u010223750 引言 学习一段时间的tensor flow之后,想找个项目试试手,然后想起了之前在看Theano教程中的一个文本分类的实 ...

  6. java学习之—栈

    /** * 栈 * Create by Administrator * 2018/6/11 0011 * 上午 10:20 **/ public class StackX { private int ...

  7. mybatis 批量查询参数语句

    在mybatis  传入数组在sql语句中进行查询 1.传入一个map集合,已或者的形式拼接数组循环 <select id="selectUserByList" parame ...

  8. React Router 4.0 ---- 嵌套路由和动态路由

    嵌套路由,从广义上来说,分为两种情况:一种是每个路由到的组件都有共有的内容,这时把共有的内容抽离成一个组件,变化的内容也是一个组件,两种组件组合嵌套,形成一个新的组件.另一种是子路由,路由到的组件内部 ...

  9. python---反射详解

    反射即想到4个内置函数分别为:getattr.hasattr.setattr.delattr  获取成员.检查成员.设置成员.删除成员 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  10. BZOJ1503[NOI2004]郁闷的出纳员——treap

    OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资.如果他心 ...