全国航班数据与可视化分析

概述

本文通过爬取全国航班的数据,并对行数据进行可视化展示与分析。

数据来源

数据是从哪儿也不想去的去哪网抓过来。为了能够获取到数据,抓取了下请求的地址,抓取的地址如下:

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
JET987
空客321(中)787
ERJ-190(中)678
庞巴迪CRJ900547
其他机型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
联系方式

类型内容
qq1004740957
公众号lzugis15
e-mailniujp08@qq.com
webgis群452117357
Android群337469080
GIS数据可视化群458292378

“GIS讲堂”知识星球今天开通了,在星球,我将提供一对一的问答服务,你问我答,期待与你相见。
知识星球二维码

LZUGIS

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛老师讲GIS

感谢老板支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值