1.Arcmap处理数据
1.1 建立Map和GDB
1.2 加载数据
- 选择数据
- 选择坐标维度和坐标系统
接着会有个提示,直接点OK即可。
然后会在图层里面出现一个原数据文件名 Events
拼起来的图层。
1.3加载地图
添加矢量天地图
1.4 导出为点数据
1.5 过滤错误数据
1.6 将过滤后的数据保存为新图层
1.7 转换坐标系为3857
1.8 IDW插值
1.9 绘制渔网图Fishnet
1.10 Zonal Statistics As Table
1.11 用fishnet和Zonal Statistics进行关联,获取平均价格
选中fishnet_3857_target图层,右键,Joins and Relates,然后选中Join
1.12 转换为4326坐标系
使用Project工具,选择坐标系4326
1.13 4326坐标系的fishnet图层增加行列属性,并赋值
- 4326坐标系的fishnet图层增加行列属性:
- 行列赋值
第一步,读取列数,找到最右下角的渔网格子,获取OID即可
第二步,赋值
1.14 导入数据到数据库中
2.Oracle加工
2.1 计算每个渔网格长款对应的经纬度
- 获取渔网的经纬度范围
纬度范围是:
30.422475
30.980535
经度范围是:
103.655354
104.443625
- 获取渔网格子的行和列数目
select max(frow),max(fcol) from
ss_dm.simon_house_price_chengdu;
得到结果是:
max(frow) | max(fcol) |
---|---|
288 | 351 |
可以算出:
経度差:0.788271
纬度差:0.55806
一个格子的经度是:0.788271/351,为0.0022457863247863
一个格子的纬度是:0.55806/288,为0.0019377083333333
2.2 和Home POI关联,获取每个用户居住地的房价
可以参考下面的语句
create table simon_rsprice_chengdu nologging as
select /*+parallel(a,8)*/
a.user_id,
b.meanprice
from cip.homework_poi a,simon_house_price_chengdu b
where a.province='081' and a.date_dt = date '2017-06-01'
and ceil((a.top1_home_lon - 103.655354) / 0.0022457863247863) =b.fcol
and ceil((a.top1_home_lat - 30.422475 ) / 0.0019377083333333) =b.frow;
更好的方法是把成都用户筛选出来,把POI的坐标也提取出来,按城市进行计算。
3.HDFS存储
3.1 导出数据
- simon_rsprice_chengdu导出脚本
spool /home/simon/simon_rsprice_chengdu.dat
set pagesize 0
set echo off;
set heading off ;
set termout off;
set trimspool on;
set feedback off ;
set term off ;
set termout off;
set serveroutput off;
SET LINESIZE 2500;
select a.user_id||'|'||a.meanPrice from simon_rsprice_chengdu a;
spool off ;
- 执行脚本命令
#!/bin/bash
source ~/.bash_profile
START_TIME=`date +'%s'`
sqlplus -s user/password@db<<EOF //注意用户名密码
@/home/simon/spool.sql
EOF
END_TIME=`date +'%s'`
DURATION=`expr "$END_TIME" - "$START_TIME"`
echo $DURATION
3.2 上传到HDFS目录
HDFS目录为:
/user/simon/spendingpower/basicinfo/rsprice/csv_1_0/chengdu