概述
本文通过爬取全国航班的数据,并对行数据进行可视化展示与分析。
数据来源
数据是从哪儿也不想去的去哪网抓过来。为了能够获取到数据,抓取了下请求的地址,抓取的地址如下:
https://flight.qunar.com/touch/api/domestic/wbdflightlist?departureCity=%E5%8C%97%E4%BA%AC&arrivalCity=%E6%B7%B1%E5%9C%B3&departureDate=2018-06-12&ex_track=&__m__=09de50bb5812f2686e2db9b0f49185d0&sort=
返回后的数据格式如下:
有了上面的URL和结果,并添加了百度地图的地理编码接口,最终得到数据如下:
数据处理
1. 数据入库
为了更好地服务于我,首先将数据做了入库(此处我用的是Postgres库),表结构如下:
CREATE TABLE domestic_flight
(
departure_city character varying(30),
departure_cy double precision,
departure_cx double precision,
landing_city character varying(30),
landing_cy double precision,
landing_cx double precision,
mileage character varying(255),
flight_schedules character varying(255),
airlines character varying(255),
aircraft_models character varying(255),
departure_time character varying(255),
landing_time character varying(255),
departure_airport character varying(255),
departure_y double precision,
departure_x double precision,
landing_airport character varying(255),
landing_y double precision,
landing_x double precision,
punctuality_rate character varying(255),
average_delayed character varying(255),
is_mon smallint,
is_tue smallint,
is_wed smallint,
is_thr smallint,
is_fri smallint,
is_sat smallint,
is_sun smallint
)
说明:
1、departure为起飞,landing为落地;
2、is_sat为“sat”是否有班次,”sat”为星期几的简写;
2. 提取城市和机场数据
城市和机场数据是类似的,此处以机场数据为例说明。
2.1 新建机场表
CREATE TABLE flight_airport
(
id serial,
name character varying(30),
province character varying(30),
airport_x numeric,
airport_y numeric,
CONSTRAINT pkey_air_airporty PRIMARY KEY (id)
)
2.2 插入数据
由于机场包含起飞和落地两个类型的,所以索性将两个数据做个union。
INSERT INTO flight_airport (NAME, airport_x, airport_y)(
SELECT DISTINCT
departure_airport AS airport,
departure_x AS airport_x,
departure_y AS airport_y
FROM
domestic_flight
)
UNION
(
SELECT DISTINCT
landing_airport AS airport,
to_number(landing_x, '999.999999999') AS airport_x,
to_number(landing_y, '999.999999999') AS airport_y
FROM
domestic_flight
)
说明:
1、在入库的时候,没注意,将landing_x和landing_y字段类型设成了String,所以此处做了一个转换;
2.3 更新省属性
省属性是通过空间表‘province’和flight_airport 表做空间关联而得的。
UPDATE flight_airport
SET province = (
SELECT
NAME
FROM
province
WHERE
st_within (
st_point (
flight_airport.airport_x,
flight_airport.airport_y
),
province.geom
)
)
ok, 大工告成,最后的数据如下:
机场
有机场的城市
数据展示与分析
数据的地图展示是在geohey云平台上实现。
1.位置分布
1.1 有机场的城市的位置分布
有机场的城市1.2 机场的位置分布
机场位置机场分布热力图
2.数据统计
2.1 省机场数排名
SELECT
province,
COUNT (1) AS airport_num
FROM
flight_airport
GROUP BY
province
ORDER BY
airport_num DESC
省名称 | 机场个数 |
---|---|
内蒙古 | 16 |
新疆 | 15 |
云南 | 13 |
江苏 | 11 |
四川 | 11 |
山东 | 11 |
甘肃 | 10 |
广东 | 9 |
黑龙江 | 9 |
贵州 | 8 |
辽宁 | 8 |
浙江 | 8 |
湖南 | 7 |
湖北 | 6 |
西藏 | 6 |
福建 | 6 |
广西 | 6 |
安徽 | 6 |
江西 | 5 |
上海 | 5 |
陕西 | 5 |
山西 | 5 |
北京 | 5 |
吉林 | 4 |
河北 | 4 |
宁夏 | 4 |
河南 | 3 |
青海 | 3 |
重庆 | 2 |
海南 | 2 |
天津 | 1 |
2.1 航空公司航班数排名
SELECT
airlines as name,
COUNT (1) AS num
FROM
domestic_flight
GROUP BY
airlines
ORDER BY
num DESC
航空公司 | 航班数 |
---|---|
南方航空 | 2552 |
东方航空 | 1862 |
中国国航 | 1440 |
深圳航空 | 1183 |
厦门航空 | 1000 |
海南航空 | 982 |
山东航空 | 779 |
华夏航空 | 565 |
四川航空 | 468 |
天津航空 | 463 |
祥鹏航空 | 332 |
春秋航空 | 298 |
河北航空 | 292 |
吉祥航空 | 278 |
首都航空 | 268 |
昆明航空 | 239 |
成都航空 | 219 |
上海航空 | 214 |
西藏航空 | 212 |
幸福航空 | 195 |
长龙航空 | 167 |
东海航空 | 133 |
北部湾航空 | 111 |
西部航空 | 92 |
奥凯航空 | 90 |
福州航空 | 68 |
澳洲航空 | 67 |
九元航空 | 60 |
多彩航空 | 52 |
新西兰航空 | 52 |
大新华航空 | 50 |
瑞丽航空 | 46 |
扬子江航空 | 42 |
青岛航空 | 40 |
乌鲁木齐航空 | 30 |
英国航空 | 26 |
全日空航空 | 18 |
重庆航空 | 17 |
香港航空 | 17 |
红土航空 | 13 |
日本航空 | 13 |
联合航空 | 8 |
桂林航空 | 4 |
江西航空 | 4 |
夏威夷航空 | 3 |
酷航 | 3 |
长安航空 | 2 |
北欧航空 | 2 |
2.3 飞机机型排名
SELECT
aircraft_models as name,
COUNT (1) AS num
FROM
domestic_flight
GROUP BY
aircraft_models
ORDER BY
num DESC
机型名称 | 个数 |
---|---|
波音737(中) | 6243 |
空客320(中) | 3697 |
空客319(中) | 1278 |
JET | 987 |
空客321(中) | 787 |
ERJ-190(中) | 678 |
庞巴迪CRJ900 | 547 |
其他机型 | 457 |
新舟60(小) | 145 |
空客330(宽体机) | 108 |
空客321(窄体机) | 37 |
波音787(大) | 30 |
CRJ(小) | 24 |
ERJ(小) | 20 |
波音777(大) | 15 |
波音757(中) | 10 |
空客380(大) | 5 |
波音747(大) | 2 |
波音767(大) | 1 |
数据下载地址:链接:https://pan.baidu.com/s/1FQW1OkNtALIvfoxFbcn4vw 密码:m1k2
技术博客
CSDN:http://blog.csdn.NET/gisshixisheng
在线教程
https://edu.csdn.net/course/detail/799
https://edu.csdn.net/course/detail/7471
联系方式
类型 | 内容 |
---|---|
1004740957 | |
公众号 | lzugis15 |
niujp08@qq.com | |
webgis群 | 452117357 |
Android群 | 337469080 |
GIS数据可视化群 | 458292378 |
“GIS讲堂”知识星球今天开通了,在星球,我将提供一对一的问答服务,你问我答,期待与你相见。
知识星球二维码 LZUGIS
网友评论