通过用户POI经纬度获取居住地的房价信息

  • Arcmap处理数据
    • 1 建立Map和GDB
    • 2 加载数据
    • 3加载地图
    • 4 导出为点数据
    • 5 过滤错误数据
    • 6 将过滤后的数据保存为新图层
    • 7 转换坐标系为3857
    • 8 IDW插值
    • 9 绘制渔网图Fishnet
    • 10 Zonal Statistics As Table
    • 11 用fishnet和Zonal Statistics进行关联获取平均价格
    • 12 转换为4326坐标系
    • 13 4326坐标系的fishnet图层增加行列属性并赋值
    • 14 导入数据到数据库中
  • Oracle加工
    • 1 计算每个渔网格长款对应的经纬度
    • 2 和Home POI关联获取每个用户居住地的房价
  • HDFS存储
    • 1 导出数据
    • 2 上传到HDFS目录

1.Arcmap处理数据

1.1 建立Map和GDB

通过用户POI经纬度获取居住地的房价信息_第1张图片

1.2 加载数据

  • 选择数据

通过用户POI经纬度获取居住地的房价信息_第2张图片

  • 选择坐标维度和坐标系统

通过用户POI经纬度获取居住地的房价信息_第3张图片

接着会有个提示,直接点OK即可。

然后会在图层里面出现一个原数据文件名 Events拼起来的图层。

1.3加载地图

添加矢量天地图
通过用户POI经纬度获取居住地的房价信息_第4张图片

1.4 导出为点数据

通过用户POI经纬度获取居住地的房价信息_第5张图片

1.5 过滤错误数据

通过用户POI经纬度获取居住地的房价信息_第6张图片

1.6 将过滤后的数据保存为新图层

通过用户POI经纬度获取居住地的房价信息_第7张图片

1.7 转换坐标系为3857

通过用户POI经纬度获取居住地的房价信息_第8张图片

通过用户POI经纬度获取居住地的房价信息_第9张图片

1.8 IDW插值

通过用户POI经纬度获取居住地的房价信息_第10张图片

通过用户POI经纬度获取居住地的房价信息_第11张图片

通过用户POI经纬度获取居住地的房价信息_第12张图片

通过用户POI经纬度获取居住地的房价信息_第13张图片

1.9 绘制渔网图Fishnet

通过用户POI经纬度获取居住地的房价信息_第14张图片

通过用户POI经纬度获取居住地的房价信息_第15张图片

通过用户POI经纬度获取居住地的房价信息_第16张图片

1.10 Zonal Statistics As Table

通过用户POI经纬度获取居住地的房价信息_第17张图片

1.11 用fishnet和Zonal Statistics进行关联,获取平均价格

选中fishnet_3857_target图层,右键,Joins and Relates,然后选中Join

通过用户POI经纬度获取居住地的房价信息_第18张图片

通过用户POI经纬度获取居住地的房价信息_第19张图片

通过用户POI经纬度获取居住地的房价信息_第20张图片

1.12 转换为4326坐标系

使用Project工具,选择坐标系4326
通过用户POI经纬度获取居住地的房价信息_第21张图片

1.13 4326坐标系的fishnet图层增加行列属性,并赋值

  • 4326坐标系的fishnet图层增加行列属性:

通过用户POI经纬度获取居住地的房价信息_第22张图片

  • 行列赋值

第一步,读取列数,找到最右下角的渔网格子,获取OID即可
通过用户POI经纬度获取居住地的房价信息_第23张图片

第二步,赋值

通过用户POI经纬度获取居住地的房价信息_第24张图片

通过用户POI经纬度获取居住地的房价信息_第25张图片

1.14 导入数据到数据库中

通过用户POI经纬度获取居住地的房价信息_第26张图片

通过用户POI经纬度获取居住地的房价信息_第27张图片

2.Oracle加工

2.1 计算每个渔网格长款对应的经纬度

  • 获取渔网的经纬度范围
    通过用户POI经纬度获取居住地的房价信息_第28张图片

纬度范围是:
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<'%s'`
DURATION=`expr "$END_TIME" - "$START_TIME"`
echo $DURATION

3.2 上传到HDFS目录

HDFS目录为:

/user/simon/spendingpower/basicinfo/rsprice/csv_1_0/chengdu

你可能感兴趣的:(地图与可视化)