source: osmose-backend/analysers/analyser_merge_poste_fr.py @ 1325f81

Last change on this file since 1325f81 was 1325f81, checked in by Frédéric Rodrigo <frodrigo@…>, 6 years ago

Update poste_fr

  • Property mode set to 100644
File size: 5.9 KB
Line 
1#!/usr/bin/env python
2#-*- coding: utf-8 -*-
3
4###########################################################################
5##                                                                       ##
6## Copyrights Frédéric Rodrigo 2012                                      ##
7##                                                                       ##
8## This program is free software: you can redistribute it and/or modify  ##
9## it under the terms of the GNU General Public License as published by  ##
10## the Free Software Foundation, either version 3 of the License, or     ##
11## (at your option) any later version.                                   ##
12##                                                                       ##
13## This program is distributed in the hope that it will be useful,       ##
14## but WITHOUT ANY WARRANTY; without even the implied warranty of        ##
15## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         ##
16## GNU General Public License for more details.                          ##
17##                                                                       ##
18## You should have received a copy of the GNU General Public License     ##
19## along with this program.  If not, see <http://www.gnu.org/licenses/>. ##
20##                                                                       ##
21###########################################################################
22
23import re
24from Analyser_Merge import Analyser_Merge
25
26
27# http://wiki.openstreetmap.org/wiki/WikiProject_France/data.gouv.fr/Import_des_points_de_contact_postaux
28
29class Analyser_Merge_Poste_Fr(Analyser_Merge):
30
31    create_table = """
32        identifiant VARCHAR(254) PRIMARY KEY,
33        libelle_site VARCHAR(254),
34        caracteristique_site VARCHAR(254),
35        adresse VARCHAR(254),
36        complement_adresse VARCHAR(254),
37        lieu_dit VARCHAR(254),
38        code_postal VARCHAR(254),
39        localite VARCHAR(254),
40        pays VARCHAR(254),
41        latitude NUMERIC(10,7),
42        longitude NUMERIC(10,7),
43        geocodage VARCHAR(254),
44        telephone VARCHAR(254),
45        changeur_monnaie VARCHAR(254),
46        dab VARCHAR(254),
47        dab_timbre VARCHAR(254),
48        photocopieur VARCHAR(254),
49        affranchissement_libre_service VARCHAR(254),
50        pas_ressaut VARCHAR(254), -- Accessibilité - Absence de ressaut de plus de 2 cm de haut
51        affranchissement_libre_service_audio VARCHAR(254), -- Accessibilité - Automate d'affranchissement avec prise audio
52        boucle_magnetique VARCHAR(254), -- Accessibilité - Boucle magnétique en état de fonctionnement
53        dab_audio VARCHAR(254), -- Accessibilité - Distributeur de billets avec prise audio
54        autonome_fauteuil_roulant VARCHAR(254), -- Accessibilité - Entrée autonome en fauteuil roulant possible
55        vide VARCHAR(254), -- Accessibilité - Pas d'escalier ou bandes de vigilance présentes
56        prioritaire VARCHAR(254) -- Accessibilité - Présence d'un panneau prioritaire
57    """
58
59    def __init__(self, config, logger = None):
60        self.missing_official = {"item":"8020", "class": 1, "level": 3, "tag": ["merge", "post"], "desc":{"fr":u"Poste non intégrée"} }
61        self.missing_osm      = {"item":"7050", "class": 2, "level": 3, "tag": ["merge", "post"], "desc":{"fr":u"Poste sans ref:FR:LaPoste ou invalide"} }
62        self.possible_merge   = {"item":"8021", "class": 3, "level": 3, "tag": ["merge", "post"], "desc":{"fr":u"Poste, proposition d'intégration"} }
63        Analyser_Merge.__init__(self, config, logger)
64        self.officialURL = "http://www.data.gouv.fr/donnees/view/Liste-des-points-de-contact-du-r%C3%A9seau-postal-fran%C3%A7ais-551640"
65        self.officialName = "points de contact du réseau postal français"
66        self.csv_file = "merge_data/270949f7a9ff7dce81b45d8150279259.csv"
67        self.csv_format = "WITH DELIMITER AS ';' NULL AS '' CSV HEADER"
68        self.csv_encoding = "ISO-8859-15"
69        self.osmTags = {
70            "amenity": "post_office",
71        }
72        self.osmRef = "ref:FR:LaPoste"
73        self.osmTypes = ["nodes", "ways"]
74        self.sourceTable = "poste_fr"
75        self.sourceRef = "identifiant"
76        self.sourceX = "longitude"
77        self.sourceY = "latitude"
78        self.sourceSRID = "4326"
79        self.defaultTag = {
80            "amenity": "post_office",
81            "operator": "La Poste",
82            "source": "data.gouv.fr:LaPoste - 10/2012"
83        }
84        self.Annexe = re.compile(' A$')
85        self.Principal = re.compile(' PAL$')
86        self.APBP = re.compile(' (AP|BP)$')
87        self.defaultTagMapping = {
88            "ref:FR:LaPoste": "identifiant",
89            "name": lambda res: re.sub(self.Principal, " Principal", re.sub(self.Annexe, " Annexe", re.sub(self.APBP, "", res["libelle_site"]))),
90            "post_office:type": lambda res: {
91                None: None,
92                "AGENCE POSTALE COMMUNALE": "post_annex",
93                "RELAIS POSTE COMMERCANT": "post_partner"
94            }[res["caracteristique_site"]],
95            "addr:postcode": "code_postal",
96            # localite
97            # pays
98            "phone": "telephone",
99            "change_machine": lambda res: self.bool[res["changeur_monnaie"]],
100            "copy_facility": lambda res: self.bool[res["photocopieur"]],
101            "atm": lambda res: self.bool[res["dab"]],
102            "stamping_machine": lambda res: self.bool[res["affranchissement_libre_service"]],
103            "wheelchair": lambda res:
104                "yes" if self.bool[res["pas_ressaut"]] and self.bool[res["autonome_fauteuil_roulant"]] else
105                "limited" if self.bool[res["pas_ressaut"]] or self.bool[res["autonome_fauteuil_roulant"]] else
106                "no"
107        }
108        self.conflationDistance = 1000
109        self.text = lambda tags, fields: {"fr":"Bureau de poste %s" % ", ".join(filter(lambda x: x!=None, [fields["geocodage"].lower(), fields["adresse"], fields["complement_adresse"], fields["lieu_dit"], fields["localite"]]))}
110
111    bool = {"Non": None, "Oui": "yes"}
Note: See TracBrowser for help on using the repository browser.