Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- """
- Created on Wed Mar 25 22:04:48 2020
- @author: florian
- """
- import geopandas as gpd
- import pandas as pd
- import numpy as np
- # %% data spatiales
- # https://www.data.gouv.fr/fr/datasets/r/ab21d892-aa39-466a-a3ed-dc25ff076b78
- shapefile = gpd.read_file("/home/florian/Downloads/dpts/departements-20140306-5m.shp")
- # %% data train
- # https://www.data.gouv.fr/fr/datasets/frequentation-en-gares/
- gareFile = "/home/florian/Downloads/frequentation-gares.csv"
- gares = pd.read_csv(gareFile, delimiter=";")
- # sum by dpt
- freqGares = np.zeros(shapefile.shape[0])
- # %% data pop/age/sex
- # https://www.insee.fr/fr/statistiques/1893198
- ageFile = '/home/florian/Downloads/estim-pop-dep-sexe-gca-1975-2020.xls'
- ages = pd.read_excel(ageFile)
- # %% sort and sum by dpt data train
- for i in range(gares.shape[0]):
- gare = gares.loc[i]
- cp = str(gare["Code postal"])
- if len(cp) < 5:
- cp = "0" + cp
- dpt = int(cp[:2]) - 1 # parceque les dpts commencent à 01 et les arrays a 0
- freq = gare["Total Voyageurs 2018"]
- freqGares[dpt] += freq
- # %% create dict
- franceGeom = {}
- dptID = 0
- for dpt in range(shapefile.shape[0]):
- dptID += 1
- dptGeom = shapefile["geometry"][dpt]
- franceGeom[shapefile["nom"][dpt]] = {}
- franceGeom[shapefile["nom"][dpt]]["neighbours"] = {}
- franceGeom[shapefile["nom"][dpt]]["length"] = {}
- franceGeom[shapefile["nom"][dpt]]["freqGare"] = freqGares[dpt]
- franceGeom[shapefile["nom"][dpt]]["agesSex"] = ages.loc[dpt]
- print("\n\n", shapefile["nom"][dpt], " centroid is ", dptGeom.centroid.coords[0])
- print("\n\n", shapefile["nom"][dpt], " ages/sex : ", franceGeom[shapefile["nom"][dpt]]["agesSex"])
- franceGeom[shapefile["nom"][dpt]]["centroid"] = dptGeom.centroid.coords[0]
- # look for neighbours
- neighList = []
- lenList = []
- for nb in range(shapefile.shape[0] - 1):
- if nb != dpt:
- neighbour = shapefile["geometry"][nb]
- if dptGeom.touches(neighbour):
- neighList.append(shapefile["nom"][nb])
- l = dptGeom.boundary.intersection(neighbour.boundary)
- l = l.length
- lenList.append(l)
- print(
- "\t",
- shapefile["nom"][dpt],
- " touches ",
- shapefile["nom"][nb],
- " on ",
- l,
- " m",
- )
- franceGeom[shapefile["nom"][dpt]]["neighbours"] = neighList
- franceGeom[shapefile["nom"][dpt]]["length"] = lenList
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement