Thursday, December 27, 2018

Matlab: WGET下载文件

Wget诞生于1996年,安装过程参考[1],下载地址在[2],注意设置环境变量。安装非常简易,简易教程参考[4]、[5]。

MODIS

MODIS数据确认后,系统自动发送邮件至邮箱,数据将在5天后删除。邮件正文包含订单编号及示例Wget下载语句,如Fig. 1。
Fig. 1
Wget语句,请注意三处,每次下载之时均需确认完整:第一是订单编号;第二是appKey;第三是下载地址,下载过程及appKey请参考说明,如下示例:
1
wget -e robots=off -m -np -R .html,.tmp -nH --cut-dirs=3 "https://ladsweb.modaps.eosdis.nasa.gov/archive/orders/501290927/" --header "Authorization: Bearer 7E334C3A-079E-11E9-A5A4-CDB570C49BBF" -P F:\country.road\MODISDownload\output
如果Wget遇到错误“Disabling SSL due to encountered errors.”,2019年6月2日的解决方法是应用最新版“Wget1.20.3”.

References

Monday, September 17, 2018

Data: NUMBEO

NUMBEO基于互联网用户反馈得到全球各国(部分城市)数据,该数据近些年被Forbes, Business Insider, Time, The Economist, BBC, The New York Times, China Daily, The Telegraph等广泛引用。
主要数据:Cost of Living/Crime/Climate/Food Prices/Gas Prices/Health Care/Pollution/Property Prices/Quality of Life/Taxi Fare/Traffic

Monday, September 10, 2018

Matlab: 经纬坐标分布像元

Introduction

已知一些企业所在坐标,依据这些坐标可以将这些企业落实在具体地像元之上,由此可以创建企业属性专题空间分布图,比如像元值(Digital Numeric)表示企业数量,在该像元内企业的数量;表示注册资本,在该像元内注册资本的数量;表示招聘数量(发布数量、发布岗位数量),在该像元内企业发布数量或岗位数量等。一般,具备坐标的属性均可落实在像元上。

Note

像元代表性,一个像元代表特定的面积,比如一平方公里的像元依据坐标分布5家企业(公司),若在北京,这5家企业(公司)占地范围极有可能不超过像元范围(与像元范围相比,他们非常接近一个个点),因为北京地区多为服务业企业(公司),租用写字楼即是企业经营场所,多数写字楼还是高层建筑,可容纳多家企业,但在一些中西部地区,这样的一平方公里像元就可能需要再斟酌,因为他们多为农业加工、制造业企业,占地若干平方公里的企业也是屡见不鲜,这些地区应仔细考虑像元覆盖范围。

基本步骤

第一步,生成背景栅格。注意填充configuration.xlsx,像元数据类型依据具体情况,参考DataType.txt完成。
第二步,属性分布在像元。输入文件位于input目录,每一CSV文件前两列是名称、地址或其他你认为重要的属性,第三、四列依次是纬度、经度(不可调整),第五列是数值型属性,为数值之和(SUM),若不存在第五列像元数值则表示是每条坐标的数量之和(COUNT)。 输出栅格文件位于output,它与对应CSV文件同名。同时,输出log文件,记录一些不能顺利实现分布的数据属性,输出err文件,格式化整理这些数据的主要属性,以备将来重新批量查询。
Fig. 1
如Fig .1所示,(a)无第五列数值,所以(a)是每条坐标累计之和(COUNT),此处是像元中企业所在数量,若像元数值是10,就表示该像元范围有10家企业;(b)有第五列数值,所以(b)是属性数值累计之和(SUM),若像元数值是10000,就表示该像元范围内属性数值累计为10000,但至于该数值是多少条属性值累计得来,还需参考(a),可能是1条,也可能是多条。

Saturday, September 8, 2018

MAP API: 中文地址重定位经纬坐标

Introduction

在调用百度API之前,通过参考文献[1]获得一个开发秘钥(AK)。如Fig. 1所示,应用类型“浏览器端”,启用服务“全选”,Referer白名单可以先填“*”(此时任何网站均可访问,存在安全风险),待以后情况补充为特定网站(此时仅指定网站可以访问,安全性即可加强)。 参考文献[2]Python代码不能运行,但其结构、流程具有借鉴意义。
Fig. 1
中文地址不能直接加入URL发出申请,先行转换为URL编码。如上地十街10号,转制为URL编码即为“%E4%B8%8A%E5%9C%B0%E5%8D%81%E8%A1%9710%E5%8F%B7”(验证地址),基础是UTF-8编码。

BAIDU MAP API

我们使用百度API,以地址返回的是百度坐标(与真实WGS84坐标之间存在一定偏移),一个简单的替代方法减小这种偏移(不是消除偏移),请见参考文献[7]。输入及输出参数配置说明。地址最多支持84个字节等于(UTF-8)28个字,在转为URL编码之前需对地址稍加验证和处理,以符合要求。

时间复杂度

若并行处理(时间必然缩短),请先行注释如下代码:
1
2
3
4
5
6
7
8
if BDcoord>300
    disp('This script had been ended.');
    return;
elseif BDcoord==-1
    invalidlist=[invalidlist; ii];
    disp([num2str(ii), '. not found.']);
    continue;
end
测试情况:1000个地址,顺序查询用时约在5.8分钟。

不同用户每日查询上限

权益对比:未认证用户(6000次/日)、认证个人用户(30万次/日)、认证企业用户(300万次/日)

References

Wednesday, August 15, 2018

Matlab: Batch add fields and assign values to features

Introduction

Given a vector file, add attribute values to each vector unit of the file for further analysis. Please see Fig. 1 for the attribute table before and after. In the original attribute table, some field names are displayed abnormally due to encoding issues, so please use English characters for relevant characters.(已知一个矢量文件,为该文件的每一矢量单元增加属性数值,用于进一步分析。属性表前后请见Fig. 1。其中,原属性表某字段名称前后因编码问题而显示异常,因而涉及字符请使用英文字符。)
Fig. 1

Note

代码配置情况如下,每次运行前注意核对:
1.确认DBF文件标签列,对应index_col_locate;
2.默认数值型属性长度20位,小数点后6位,可调整,空格填充0;
3.默认字符型属性长度14位,以应用英文字符为宜,长度可调整,空格填充*;
4.一次匹配一个矢量文件,输出在Output目录。

References

Monday, August 6, 2018

MAP API: BAIDU MAP API地址解析

我在互联网上找到一个小工具,可以作为各大在线地图地址解析的统一接口,操作很简单。所以我以工具作为地址查询坐标的直接应用,而非链接百度地图API。这个小工具的下载及操作请见文献[4]。
注意:个别名称指示范围并不准确,建议应在名称前加上特定区域名称纠正此错误,如上海XX公司北京分公司,解析过程极易导致解析范围地位在上海地区,此解决方式是直接在企业名称前强制加上北京等区域名称,有必要在每次解析之前将区域名称冠到企业名称之前
这里需要说明的是,小工具选择使用百度地图完成地址解析,返回的是百度坐标。百度坐标是在GCJ02坐标系(俗称火星坐标系)之上再加上一次非线性偏移而得,记为BD09。这里,我们就明白了,百度坐标是经过两次偏移得到,还不能直接应用到分析过程,它还需还原至原始坐标。
1
2
3
4
5
6
7
%一个取巧的方法将百度坐标转换为原始坐标[2]:
%假设你有百度坐标:x1=116.397428,y1=39.90923 
%把这个坐标当成GPS坐标,通过接口获得他的百度坐标:x2=116.41004950566,%y2=39.916979519873
%通过计算就可以得到GPS的坐标: 
x=2*x1-x2,y=2*y1-y2 
x=116.38480649434001 
y=39.901480480127

References