<jupyter_start><jupyter_text>Manipulation des données spatiales avec Python -/-/- Author: <NAME>   -/-/- École: ENSAI               -/-/- Cours: Spatial Data          Mes sources intéréssantes: [Working-with-geospatial-data ](https://campus.datacamp.com/courses/working-with-geospatial-data-in-python/spatial-relationships?ex=11) ---------------------<jupyter_code>import geopandas as gpd
import pandas as pd
from shapely.geometry import Point
import matplotlib.pyplot as plt<jupyter_output><empty_output><jupyter_text>Les données gpkg je l'ai directement extrait des library R en format geo.<jupyter_code>georgia = gpd.read_file("georgiadata.gpkg")
georgia.head()<jupyter_output>/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/geopandas/geodataframe.py:422: RuntimeWarning: Sequential read of iterator was interrupted. Resetting iterator. This can negatively impact the performance.
  for feature in features_lst:<jupyter_text>Question 1Ecrire un code qui permet de représenter les comtés de Géorgie (dataframe georgia) en choisissant une couleur de votre choix mais avec 11 classes pour décrire la distribution du revenu médian en milliers de dollars (MedInc). Cette carte devra contenir une légende et doit permettre d’exporter cette carte en format TIFF.  MEDINC<jupyter_code># Revenue Médian
georgia.plot(column = 'MedInc', legend = True, cmap = 'BuGn', edgecolor = 'black', k=11, figsize=(16,7))
plt.title('Densité de la pop Geogie')
plt.xlabel('longitude')
plt.ylabel('latitude');<jupyter_output><empty_output><jupyter_text>Question 2Il est connu que l’on peut faire dire des choses fallacieuses à des cartes. L’une des erreurs communes est de mal représenter la distribution d’une variable ne continue en ne la catégorisant pas de la bonne façon. Dans cette question vous devez produire trois cartes représentant la même variable en montrant comment le choix du cut peut influencer la représentation du phénomène sur la carte. Pour cela vous utiliserez la variable représentant le nombre de maisons dans le New Heaven (variable HSE_UNITS dans l’objet blocks) que vous découperez en 5 classes en utilisant différentes manières de constituer ces classes (quantiles, rangs absolus, écart-type). Rajouter des légendes sur vos cartes.<jupyter_code>newhaven = gpd.read_file("newhaven.gpkg")
 newhaven.plot(column='HSE_UNITS', scheme='equal_interval', k=5, cmap='Greens', figsize=(16,7), legend=True)
# 2. Découpage par sdCuts StdMean
newhaven.plot(column='HSE_UNITS', scheme='StdMean', k=5, cmap='Greens', figsize=(16,7), legend=True)
# 2. Avec quantileCuts 
newhaven.plot(column='HSE_UNITS', scheme='quantiles', k=5, cmap='Greens', figsize=(16,7), legend=True)<jupyter_output><empty_output><jupyter_text>NotesEn concervant la meme couleur on rermarque une différence de distribution de l'echelle des couleur, d'ou l'importance de choisir le meilleur moyen de cut.  Question 3Objectif : création d’un attribut secondaire et utiliser une condition logique pour sélectionner des objets quand cet opérateur logique s’applique aux attributs que vous venez de créer.  Une entreprise souhaite commercialiser un produit en direction des populations vivant dans des zones rurales. Leur modèle leur permet de conclure qu’elle pourra vendre une unité de leur produit par tranche de 20 habitants de ces zones rurales visitées par un représentant de leur équipe de vente. Pour cela elle veut déterminer quels sont les comtés des données de Géorgie qui a une densité de 20 habitants par km². A partir des données écrire le code qui permet de sélectionner des comtés sur la base d’un critère de densité de population. Pour cela vous calculerez un score de densité de population et représenterez sur une carte les comtés qui ont une densité supérieure à 20 habitants par km²<jupyter_code>georgia3["PctRural"]*georgia3["TotPop90"] / 100
# Pop rural

georgia3["poprural"] = georgia3["PctRural"]*georgia3["TotPop90"] / 100 # Ajoute de la variables poprural dasn la base georgia

# calcule de la superficie des comtés en Km^2    
georgia3_3857 = georgia3.to_crs(epsg = 3857) # create a copy of districts that uses EPSG:3857
# define a variable for m^2 to km^2 and get area in kilometers squared
sqm_to_sqkm = 10**6
georgia3["district_area_km"] = georgia3_3857.geometry.area / sqm_to_sqkm

georgia3['poprur_density'] = georgia3.apply(lambda row: row.poprural/row.district_area_km, axis = 1)
georgia3 = georgia3.to_crs(epsg = 4326)
# sélection des comtés dont la densité est supérieure à 20
bool20 = georgia3["poprur_density"] > 20
georgia3["den_poprural20"] = bool20  # New variable den_poprural20, (comtés avec densité supérieur à 20)
georgia3.sample(6)
georgia3.plot(column="den_poprural20", figsize=(16,10), legend=True)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.08394543546694648, 'fraction_numerical': 0.024134312696747113, 'mean_word_length': 5.62865090403338, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 22, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '32760', 'license': 'MIT', 'n_tokens_mistral': 1665, 'n_tokens_neox': 1597, 'n_words': 531, 'path': '00.Python_manipulation_donnees_spatiales.ipynb', 'repo_name': 'abdoulsn/spatial-econometrics', 'size': '4775'}