예제 #1
0
def get_commune_geojson() -> FeatureCollection:
    cercles_df = pandas.read_csv(path_to_dataset("mali/Lars_data_cercle.csv"))
    cercles_df = cercles_df.set_index("Cercle")
    communes_df = pandas.read_csv(
        path_to_dataset("mali/Lars_data_commune.csv"))
    communes_df = communes_df.set_index("Commune")

    with open(path_to_dataset("mali/mli_admbnda_adm3_pop_2017.geojson"),
              "r") as fp:
        communes_geo = load(fp)

    for f in communes_geo["features"]:
        commune_props = f["properties"]
        cercle_name = commune_props["admin2_nam"]
        commune_name = commune_props["admin3_nam"]
        cercle_data = (cercles_df.loc[cercle_name].to_dict()
                       if cercle_name in cercles_df.index else {})
        commune_data = (communes_df.loc[commune_name].to_dict()
                        if commune_name in communes_df.index else {})
        f["properties"] = {
            "objectid": commune_props["objectid"],
            "admin2_nam": cercle_name,
            "admin3_nam": commune_props["admin3_nam"],
            "pop2017_to": commune_props["pop2017_to"],
            "milieu": commune_data.get("Milieu", None),
            "pop_2016": cercle_data.get("pop_2016", 0),
            "taux_fonct": round(cercle_data.get("taux_fonct", 0)),
            "taux_acces": round(cercle_data.get("taux_acces", 0)),
            "taux_equip": round(cercle_data.get("taux_equip", 0)),
        }

    return communes_geo
예제 #2
0
def get_functionality_percentage_per_region_geojson() -> Dict[str, Any]:
    region_df = pandas.read_csv(
        path_to_dataset("mali/functionality_wp_mali.csv"), sep=";")
    region_data = region_df.set_index("ADM1_FR")["Percentage"].to_dict()

    with open(path_to_dataset("mali/mli_hdx.json"), "r") as fp:
        region_geo = json.load(fp)

    for f in region_geo["features"]:
        region = f["properties"]["admin1Name"]
        f["properties"] = {"region": region, "value": region_data[region]}

    return region_geo
예제 #3
0
def get_waterpointdata_geojson() -> Dict[str, Any]:
    dataframe = pandas.read_csv(path_to_dataset("sierra-leone/WPDx_SL.csv"))
    dataframe = dataframe.where(pandas.notnull(dataframe), None)
    features = []
    for i in range(0, len(dataframe.index)):
        item = dataframe.loc[i]
        longitude = item["#lon_deg"]
        latitude = item["#lat_deg"]
        props = {
            "adm1": item["#adm1"],
            "adm2": item["#adm2"],
        }
        try:
            feature = Feature(
                geometry=Point((
                    float(longitude),
                    float(latitude),
                )),
                properties=props,
                id=f"{longitude},{latitude}",
            )
            features.append(feature)
        except ValueError:
            pass
    return FeatureCollection(features)
예제 #4
0
def get_waterpoints_geojson() -> Dict[str, Any]:
    dataframe = pandas.read_csv(path_to_dataset("sierra-leone/SL_wells.csv"),
                                delimiter=";")
    dataframe = dataframe.where(pandas.notnull(dataframe), None)
    features = []
    for i in range(0, len(dataframe.index)):
        item = dataframe.loc[i]
        longitude = item["geo longitude"]
        latitude = item["geo latitude"]
        props = {
            "province": item.province,
            "district": item.district,
            "chiefdom": item.chiefdom,
            "water_supply_type": item.water_supply_type,
        }
        try:
            feature = Feature(
                geometry=Point((
                    float(longitude),
                    float(latitude),
                )),
                properties=props,
                id=f"{longitude},{latitude}",
            )
            features.append(feature)
        except ValueError:
            pass

    return FeatureCollection(features)
예제 #5
0
def get_resources_media() -> List[Dict[str, Any]]:
    dataframe = pandas.read_csv(
        path_to_dataset("mali/Media-Library-Export-2020-December-21-1352.csv"))
    dataframe = dataframe.where(pandas.notnull(dataframe), None)
    resources = []
    for i in range(0, len(dataframe.index)):
        item = dataframe.loc[i]
        files = [item._media_lib_file]
        if item._media_lib_file2:
            files.append(item._media_lib_file2)
        resources.append({
            "id":
            int(item.ID),
            "title":
            item.Title,
            "slug":
            slugify(item.Title),
            "content":
            item.Content,
            "date":
            item.Date,
            "locations":
            item.Locations.split("|") if item.Locations else [],
            "types":
            item.Types.split("|") if item.Types else [],
            "categories":
            item.Categories.split("|") if item.Categories else [],
            "author":
            item._media_lib_author,
            "files":
            files,
        })

    return resources
예제 #6
0
def get_population_per_region_geojson() -> Dict[str, Any]:
    region_df = pandas.read_csv(
        path_to_dataset("mali/Mali_populationV8_model_short.csv"))
    region_data = region_df.set_index("ADM1_FR")["Pop.2016"].to_dict()

    with open(path_to_dataset("mali/mli_hdx.json"), "r") as fp:
        region_geo = json.load(fp)

    for f in region_geo["features"]:
        region = f["properties"]["admin1Name"]
        f["properties"] = {
            "region": region,
            "value": region_data.get(region, 0)
        }

    return region_geo
예제 #7
0
def get_waterpoints_geojson() -> Dict[str, Any]:
    dataframe = pandas.read_csv(
        path_to_dataset("mali/23112020_Mali_seasonality.csv"))
    dataframe = dataframe.where(pandas.notnull(dataframe), None)
    features = []
    for i in range(0, len(dataframe.index)):
        item = dataframe.loc[i]
        props = {
            "region": item.region,
            "functionality_main": item.functionality_main,
            "puits_safety": item.puits_safety,
            "seasonality": item.seasonality,
            "water_months": item.water_months,
            "photo": item.photo,
        }
        try:
            feature = Feature(
                geometry=Point((float(item.longitude), float(item.latitude))),
                properties=props,
                id=f"{item.longitude},{item.latitude}",
            )
            features.append(feature)
        except ValueError:
            pass

    return FeatureCollection(features)
예제 #8
0
def get_water_quality_summary() -> Dict[str, Any]:
    dataframe = pandas.read_csv(path_to_dataset("sierra-leone/SL_subset2.csv"))
    summary = (dataframe.groupby([
        "risk.level.ecoli"
    ])["conf_inter_ecoli", "mpn.100ml"].mean().sort_values(
        by=["mpn.100ml"]).rename(columns={"mpn.100ml": "mpn_100ml"}))

    return summary.to_dict()
예제 #9
0
def get_reported_water_sources_summary() -> List[Dict[str, Any]]:
    sources = OrderedDict((s, {
        "source": s
    }) for s in ["Improved", "Unimproved", "Surface water"])
    dataframe = pandas.read_csv(path_to_dataset("sierra-leone/SL_subset2.csv"))
    summary = dataframe.groupby(["sdg_improved_source"]).size().to_dict()
    for key, val in summary.items():
        sources[key]["value"] = val

    return [v for v in sources.values()]
예제 #10
0
def get_improved_reason_summary() -> List[Dict[str, Any]]:
    dataframe = pandas.read_csv(path_to_dataset("sierra-leone/SL_subset2.csv"))
    unimproved = dataframe[dataframe["sdg_sanitation"] == "Improved"]
    facility_types = (unimproved.groupby(
        ["toilet_facility_type"]).size().sort_values(ascending=False))
    result = {"facility": "Improved"}
    for type, size in facility_types.items():
        result[type] = size

    return [result]
예제 #11
0
def get_shared_facilities_summary() -> List[Dict[str, Any]]:
    facilities = ["Open Defecation", "Unimproved", "Improved"]
    result = OrderedDict((facility, {
        "facility": facility
    }) for facility in facilities)
    dataframe = pandas.read_csv(path_to_dataset("sierra-leone/SL_subset2.csv"))
    summary = dataframe.groupby(["sdg_sanitation",
                                 "share_facility"]).size().to_dict()
    for (facility, shared), size in summary.items():
        result[facility][shared] = size

    return [val for val in result.values()]
예제 #12
0
def get_waterpoint_distances_summary() -> List[Dict[str, Any]]:
    sources = OrderedDict(
        (s, {
            "distance": s
        }) for s in
        ["Water on premises", "Less than 30 minutes", "More than 30 minutes"])
    dataframe = pandas.read_csv(path_to_dataset("sierra-leone/SL_subset2.csv"))
    summary = dataframe.groupby(["sdg_round_trip"]).size().to_dict()
    for key, val in summary.items():
        sources[key]["value"] = val

    return [v for v in sources.values()]
예제 #13
0
def get_households_geojson() -> Dict[str, Any]:
    dataframe = pandas.read_csv(path_to_dataset("sierra-leone/SL_subset2.csv"))
    dataframe = dataframe.where(pandas.notnull(dataframe), None)
    features = []
    for i in range(0, len(dataframe.index)):
        item = dataframe.loc[i]
        props = {
            "region": item.location_region,
            "district": item.location_district,
            "chiefdom": item.location_chiefdom,
            "sdg_improved_source": item.sdg_improved_source,
            "sdg_round_trip": item.sdg_round_trip,
            "sdg_sanitation": item.sdg_sanitation,
            "sdg_hand_washing": item.sdg_hand_washing,
            "toilet_facility_type": item.toilet_facility_type,
            "flush_to": item.flush_to,
            "share_facility": item.share_facility,
            "hand_wash_observe": item.hand_wash_observe,
            "risk_level_ecoli": item["risk.level.ecoli"],
            "mpn_per_100ml": item["mpn.100ml"],
            "conf_inter_ecoli": item.conf_inter_ecoli,
            "photo_ecoli": item.photo_ecoli,
        }
        try:
            feature = Feature(
                geometry=Point((
                    float(item.geolocation_longitude),
                    float(item.geolocation_latitude),
                )),
                properties=props,
                id=f"{item.geolocation_longitude},{item.geolocation_latitude}",
            )
            features.append(feature)
        except ValueError:
            pass

    return FeatureCollection(features)
예제 #14
0
def get_pump_safety_json() -> Any:
    return FileResponse(path_to_dataset("mali/pump-safety.json"))
예제 #15
0
def get_additional_people_json() -> Any:
    return FileResponse(path_to_dataset("mali/additional-people.json"))
예제 #16
0
def get_possible_progres_json() -> Any:
    return FileResponse(path_to_dataset("mali/possible-progress.json"))
예제 #17
0
def get_treatment_type_json() -> Any:
    return FileResponse(path_to_dataset("mali/treatment-type.json"))
예제 #18
0
def get_pump_type_json() -> Any:
    return FileResponse(path_to_dataset("mali/pump-type.json"))
예제 #19
0
def get_pollution_type_json() -> Any:
    return FileResponse(path_to_dataset("mali/pollution-type.json"))
예제 #20
0
def get_mechanic_vs_manual_pump_json() -> Any:
    return FileResponse(path_to_dataset("mali/mechanic-vs-manual-pump.json"))
예제 #21
0
def get_distance_json() -> Any:
    return FileResponse(path_to_dataset("mali/distance.json"))
예제 #22
0
def get_abandonment_json() -> Any:
    return FileResponse(path_to_dataset("mali/abandonment.json"))
예제 #23
0
def get_region_names() -> List[str]:
    dataframe = pandas.read_csv(
        path_to_dataset("mali/23112020_Mali_seasonality.csv"))
    dataframe = dataframe.where(pandas.notnull(dataframe), None)

    return list(dataframe.region.unique())
예제 #24
0
def get_communes_data() -> List[Dict[str, Any]]:
    df = pandas.read_csv(path_to_dataset("mali/Lars_data_commune.csv"))
    df = df.where(pandas.notnull(df), None)
    return df.to_dict("records")