分类目录归档:GIS

利用高德api及arcgis制作等时线的方法

等时线在交通规划里面分析可达性还是挺有用的。那么分析现状的某种交通方式的等时线,可以通过爬取高德、百度等的路径规划数据,然后在arcgis里面生成。arcgis的网络分析做服务区等时线以后有时间分享一下。

第一步,爬取POI

爬取POI网上工具很多啦,也有不少人分享,可以很方便的下载到,如果找不到,也可以自己写爬虫爬取,例如高德的:

具体的参数可以查看api文档https://lbs.amap.com/api/webservice/guide/api/search,其中types、city、page需要,其他好像都不用。

返回的eval(res.text)[‘pois’]就是各个poi点的坐标,可以自己写到文件什么的下一步提取使用,我们只需要提取坐标就好了。

第二步,获取某个起始点到各个POI点的行程时间

比如开车,一个点到一个点的路径规划按下面方法获取:

具体不同交通方式、不同参数什么的都可以查文档https://lbs.amap.com/api/webservice/guide/api/direction

总的行程时间就是:eval(res.text)[‘route’][‘paths’][0][‘duration’],当然也可以提取各个段的时间。

好了,按上述方法,构建一个循环什么的,就可以查询起点到很多个poi目的点的行程时间了

现在我们得到三列数据:

经度、纬度、行程时间

写入csv文件,接下来就在arcgis里面操作了。

第三步,生成点

首先,高德获取的点是火星坐标,可以根据网上各种算法,转成标准84坐标。当然也可以先生成点,导出shp再根据我上上篇文章用qgis转。

csv转点,还是比较简单的,arcgis目录里面把csv文件拖到内容列表里来,然后右键显示xy数据,X字段就是经度,Y字段就是纬度,坐标系为WGS84,生成出来就是一个点事件,导出shp就可以保存了。

建议输出为投影坐标系,地理坐标系分析的时候可能会产生问题


第四步,生成TIN

打开arctoolbox,找到3D analyst工具-数据管理-TIN-创建TIN,高度值就选时间字段


第五步,TIN转等值线或等值面

arctoolbox-3D analyst工具-表面三角化-表面等值线,等值线间距根据事实情况自己调整,然后就完成了。

arctoolbox-3D analyst工具-转换-由TIN转出-TIN转栅格,这个转出来的直接就相当于是个面,不过是个栅格面,可以可以研究一下转矢量面

上面都可以自己调整一下符号系统显示效果。

另一个更加方便的火星坐标矢量地理文件纠偏方法QGIS+GeoHey Toolbox

1、前言

前面分享了一个利用postgresql、postgis等工具进行纠偏的方法,但是该方法倒来倒去参数设置什么的略麻烦,下面分享一个新的方法:

QGIS+GeoHey Toolbox

项目github地址:https://github.com/sshuair/geohey-toolbox

2、软件安装

首先下载QGIS2.18版,最新的3.0不支持

然后正常安装即可

安装完可以设置语言为简体中文Setting-Options-Locale-Override system locale-中文(简体)

3、插件安装

本来可以利用软件自己的插件库进行安装,但是根据国家政策,geohey toolbox升级了0.2版,就不提供纠偏功能了,只保留加偏功能。所以要找其他方法。

我们来到QGIS的插件网站,在右上角搜索geohey,搜索结果里面有[1349]GeoHey Toolbox,点击进入。

不要download latest,而是打开下面的Versions,可以看到0.1和0.2版,我们要下载的是0.1版,直接点击0.1进入下载页面然后点击download下载即可。

下载得到一个GeoHey-Toolbox-0.1.zip文件,怎么用呢?

首先解压出来所有文件,然后进入”c:\Users\用户名.qgis2\python\plugins\”这个文件夹

把刚才解压出来的文件放入这个文件夹里面,形如c:\Users\用户名.qgis2\python\plugins\GeoHey-Toolbox\一系列文件

文件夹格式

然后打开QGIS,进入处理-选项-数据源-Geohey Toolsbox,点击小三角勾选上Activate,OK之后(这一步偶尔会出现python错误,不知道如何处理,猜测可能是第一次运行造成的问题,可以试试先运行一下其他tool,然后重启QGIS再加载这个),打开处理-工具箱,里面就可以找到GeoHey Toolbox了,后面用法跟arctoolbox一样的啦。

加载插件

最终效果

火星坐标矢量地理文件纠偏方法

一、问题描述

大家都知道,国内的高德、百度等地理信息都是偏移过的,在日常处理过程中有诸多不便,网上有不少给坐标点(有经纬度X、Y坐标值)纠偏的工具或代码,虽然不能完全匹配,但是精度基本都能满足需求。

但是日常使用中还有一个很大的问题,就是我们的线、面等地理数据,是没法用那些工具处理的。怎么办呢?经过漫长的寻找终于找到一个postgis_LayerTransform。

其github地址:https://github.com/FreeGIS/postgis_LayerTransform
作者博客地址:blog.csdn.net/freeland1/article/details/50157641

二、使用方法

1、软件安装

这个代码需要配合postgis使用,因此要安装几个软件:postgresql、postgis。

首先安装postgresql

然后安装postgis(用跟postgresql版本配套的版本,可以独立安装,也可以在postgresql安装完后跳出来的附加组件安装程序里面安装,安装的时候选择创建一个地理数据库,后面可以用来作为模板)

2、创建数据库

打开pgadmin,新建一个数据库(在新建的时候可以以地理数据库为模板,也可以直接创建一个空数据库)

如果上一步创建了一个空数据库,那么还要安装postgis拓展(在拓展上面点右键-创建拓展,然后下拉菜单找到postgis)

3、导入数据

打开 插件-postgis shapefile and dbf loader(如果是pgadmin4,可能找不到插件这个选项,可以直接在系统开始菜单里面找这个插件)

点击view connection details,连上刚刚创建的数据库

点击add file,打开要导入的shp文件

(这一步比较重要)设置shp文件的属性,尤其是srid(WGS84地理坐标是4326,WGS墨卡托投影是3857),表名也可以设置一下,如果不设置默认就是shp文件名。

然后点击import就好了(注意文件路径不能太长太深,不能有中文)

4、处理数据

执行SQL查询,首先执行上面github提供的完整代码

然后执行select LayerTransform(‘tablename’,’GCJ2WGS’); (其中tablename就是导入的shp的名称,在上述第3步的设置属性里面设置。GCJ2WGS是一种纠偏方式,支持以下6种’BD2GCJ’, ‘GCJ2BD’, ‘WGS2GCJ’,’GCJ2WGS’,’BD2WGS’,’WGS2BD’,分别代表 百度转火星,火星转百度,84转火星,火星转84,百度转84,84转百度。)

5、导出数据

再次运行postgis shapefile and dbf loader导出即可

懒得截图,说的应该已经比较清楚了吧

ARCGIS导出到CAD分层的方法

1、问题:

收到一个公交线网的GIS数据,每条线路的信息非常丰富,现在我需要在CAD里面画图,需要将GIS里面的线路导出到CAD。开始直接导出来发现只有多段线,并且在同一个图层里面,没有任何信息。怎么办呢?

2、解决办法

(1)在线路属性表里面创建layer字段

打开线路图层的属性表,添加字段“layer”,类型设置为文本。

(2)设置layer值为公交线路编号

打开字段计算器,layer层设置为”=线路编号层”

(3)导出为CAD

可以直接右键图层-数据-导出至CAD,后面根据情况选择导出路径和名称,最好导出到低版本的CAD,OK,搞定!

3、似乎还可以把线路属性导出到块属性,等我研究一下。

ArcGIS中生成站点覆盖范围图的方法

问题出现

今天一同事让我帮忙做一个2和4号线的人口覆盖范围图,如下图:

enter image description here

没做过,开始慢慢摸索,终于研究出来了。

1、导入基础数据

与本博《统计人口岗位》相同。

2、导入线路和站点

与本博《统计人口岗位》相同。

3、生成站点周围800米范围区域

与本博《统计人口岗位》相同。

4、生成800米范围融合

打开 菜单-地图处理-融合,选择输入为上一步生成的缓冲区,其他可以默认。
生成后双击该图层下面的符号,设置填充颜色为“无填充颜色”,轮廓的宽度和颜色根据需要设置。

5、生成人口密度底图

双击基础数据图层,打开图层属性,符号系统-显示-数量-分级色彩,字段设置为需要年份的人口密度,色带本图中选择从小到大由绿变红的色带,分类选择10,然后确定。

6、设置站点和线路的大小

根据需要设置站点和线路的符号系统即可。

7、导出图形

选择合适的显示范围,选择 文件-导出地图,格式分辨率根据需要选择即可。

ArcGIS中站点周边人口岗位的统计方法

注意此处ArcGIS版本为10.2中文版

1、导入基础数据

基础数据包括研究年的小区划分、小区面积、人口岗位等信息,如果没有人口岗位密度可事先计算出来。

2、导入站点

根据轨道线网规划方案,在AutoCAD中点出站点位置,导入ArcGIS时,可以双击进入DWG文件,找到point导入。 最好不要直接导入DWG,那样会生成好几个图层,会比较麻烦。

3、生成站点周围800米范围区域

找到菜单栏-地图处理-缓冲区,输入要素为站点图层,输出根据情况定义,距离为线性单位,在此用800米,融合类型可选ALL,其他默认就行。

4、生成站点周围800米范围和基础小区叠加图层

打开Arctoolbox,找到分析工具-叠加分析-相交,输入要素选择前面生成的800米范围和基础数据层,输出根据情况定义,(XY容差根据教我的人可以选1米,但我不知道这个有啥用处),其他默认。

5、计算站点周边人口岗位数据

计算区域面积:

打开生成的相交区域图层的属性表,对面积字段计算几何,编辑和非编辑状态下都行。

计算人口和岗位:

添加相交区域人口和岗位的新字段,用字段计算器计算即可(面积密度),注意面积的换算*。

统计人口和岗位:

可以直接在ArcGIS里面统计,也可以导出为dbf用Excel等软件统计。