From 459aa056d688eb6fd6de6442b6394e448d71a33b Mon Sep 17 00:00:00 2001 From: nobohan Date: Mon, 13 Sep 2021 16:38:41 +0200 Subject: [PATCH] add script for importing data --- utils/.gitignore | 7 +++++ utils/README.md | 44 +++++++++++++++++++++++++++++ utils/arbres.sql | 25 ++++++++++++++++ utils/geojson2sql.py | 61 ++++++++++++++++++++++++++++++++++++++++ utils/gis/arbres.geojson | 32 +++++++++++++++++++++ utils/lib64 | 1 + utils/requirements.txt | 1 + 7 files changed, 171 insertions(+) create mode 100644 utils/.gitignore create mode 100644 utils/README.md create mode 100644 utils/arbres.sql create mode 100644 utils/geojson2sql.py create mode 100644 utils/gis/arbres.geojson create mode 120000 utils/lib64 create mode 100644 utils/requirements.txt diff --git a/utils/.gitignore b/utils/.gitignore new file mode 100644 index 0000000..f63cc10 --- /dev/null +++ b/utils/.gitignore @@ -0,0 +1,7 @@ +bin/ +share/ +include/ +lib/ +lib64/ +share/ +pyvenv.cfg diff --git a/utils/README.md b/utils/README.md new file mode 100644 index 0000000..e2fc3d7 --- /dev/null +++ b/utils/README.md @@ -0,0 +1,44 @@ +utils +===== + +This folder contains some scripts for preparing some data for the municipality of Wasseiges. + +## Init + +The scripts are python scripts that should run into a virtual environment. + +First, install the local dependencies: + +```bash +$ pip3 install -r requirements.txt +$ source bin/activate +``` + +## Import of the layer Arbres remarquables + +- This data is downloadable by +- The layer MUST be converted to a valid geojson format in WGS84 coordinates. +- Then simply run the script `geojson2sql` to produce a SQL file with some INSERT instructions. + +```bash +(venv) python3 geojson2sql.py +``` + +### Some notes about this import + +The import script creates database entries by filling not all the field of the table. Only mandatory (non-nullable) fields and informative fields are filled. + +Here is the column list and the corresponding values list: + +``` + column_list = ['uuid_sinp', 'id_program', 'name', 'geom', 'timestamp_create', 'id_type', 'obs_txt'] + values_list = ['UUID', '2', 'import arbres remarquables', 'POINT', 'NOW', '1', 'import' ] +``` + +Some values in these list MUST follow some conventions: + +- the "UUID" value will be converted to a a formula that creates uuid value +- the "POINT" value will be converted to a PostGIS ST_GeomFromText formula based on the coordinates of the geojson file +- the "NOW" value will be converted to a formula that creates a timestamp + +Lastly, if the values starts with `properties.`, it will be mapped to a property in the geojson. E.g, `properties.COMMENTAIR`. diff --git a/utils/arbres.sql b/utils/arbres.sql new file mode 100644 index 0000000..337a8f0 --- /dev/null +++ b/utils/arbres.sql @@ -0,0 +1,25 @@ +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(5.02557 50.626467)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(5.025652 50.626434)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(5.032234 50.627176)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(5.039723 50.635981)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(5.010499 50.623075)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(5.010748 50.624248)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(5.019938 50.609787)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(5.023591 50.610221)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(5.046384 50.59244)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(5.049593 50.597045)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(5.049672 50.597144)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(5.050006 50.597396)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(5.01025 50.605798)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(5.018572 50.608674)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(5.015283 50.609051)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(5.015149 50.609143)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(5.003621 50.618948)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(5.004804 50.619465)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(5.005737 50.620252)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(5.010218 50.623831)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(5.010279 50.624028)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(4.999617 50.624649)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(4.999643 50.624726)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(4.989328 50.62538)'),now()::timestamptz,'1','import'); +INSERT INTO "gnc_sites"."t_sites" ("uuid_sinp","id_program","name","geom","timestamp_create","id_type","obs_txt") VALUES (uuid_generate_v4(),'2','import arbres remarquables',ST_GeomFromText('POINT(4.989827 50.626227)'),now()::timestamptz,'1','import'); diff --git a/utils/geojson2sql.py b/utils/geojson2sql.py new file mode 100644 index 0000000..2bd85ef --- /dev/null +++ b/utils/geojson2sql.py @@ -0,0 +1,61 @@ +import geojson + + +def convert_coordinates_to_geom(coordinates, geometry_type): + """ Returns a string with a valid PostGIS command for creating a geometry from an array of coordinates """ + if geometry_type == 'POINT': + res = f'ST_GeomFromText(\'POINT({coordinates[0]} {coordinates[1]})\'),' + + return res + + +def import_geosjon_as_sql(filename, sql_filename, schema_name, table_name, column_list, values_list): + """ Import a geojson """ + with open(filename) as f: + g = geojson.load(f) + + sql_f = open(sql_filename,'w') + + for f in g['features']: + #print(f) + sql = f'INSERT INTO "{schema_name}"."{table_name}" (' + + col_name = '' + col_value = '' + for i,c in enumerate(column_list): + + if values_list[i] == 'UUID': + col_name += f'"{c}",' + col_value += 'uuid_generate_v4(),' + elif values_list[i] == 'NOW': + col_name += f'"{c}",' + col_value += 'now()::timestamptz,' + elif c == 'geom': + col_name += f'"{c}",' + col_value += convert_coordinates_to_geom(f.geometry.coordinates, values_list[i]) + elif values_list[i].startswith('properties.'): + col_name += f'"{c}",' + prop = values_list[i].split('.')[1] + col_value += f'\'{f.properties[prop]}\',' + else: + col_name += f'"{c}",' + col_value += f'\'{values_list[i]}\',' + + sql += f'{col_name[:-1]}) VALUES ({col_value[:-1]});\n' + + sql_f.write(sql) + + sql_f.close() + + +if __name__ == '__main__': + + filename = './gis/arbres.geojson' + sql_filename = 'arbres.sql' + schema_name= 'gnc_sites' + table_name = 't_sites' + column_list = ['uuid_sinp', 'id_program', 'name', 'geom', 'timestamp_create', 'id_type', 'obs_txt'] + values_list = ['UUID', '2', 'import arbres remarquables', 'POINT', 'NOW', '1', 'import' ] + import_geosjon_as_sql(filename, sql_filename, schema_name, table_name, column_list, values_list) + +# add CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; ?? \ No newline at end of file diff --git a/utils/gis/arbres.geojson b/utils/gis/arbres.geojson new file mode 100644 index 0000000..425760c --- /dev/null +++ b/utils/gis/arbres.geojson @@ -0,0 +1,32 @@ +{ +"type": "FeatureCollection", +"name": "arbres", +"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, +"features": [ +{ "type": "Feature", "properties": { "OBJECTID": 7979.0, "INSLOC": 64075, "SITEAR": 1, "AR": 1, "TYPE": 501, "ADRESSE": "RUE DU BARON D'OBIN, 15 - AMBRESINEAU", "DOMAINE": "V", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 326, "H": 25, "ANOBS": 1992, "INTERET": "D,P", "ENV1": "I", "ENV2": "V", "REF": null, "COMMENTAIR": "Près du mur, côté voirie ; à 2 m d'un hêtre pourpre ; signes de pourriture sur porte-greffe en 2010,", "EVOLUTION": null, "PHOTO": null, "ETAPE": "O", "GENRE": "Fagus", "SP": "sylvatica", "CULTIVAR": "'Quercifolia'", "SPFR": "Hêtre commun à feuilles de chêne" }, "geometry": { "type": "Point", "coordinates": [ 5.025569868984665, 50.626466845690814 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 12524.0, "INSLOC": 64075, "SITEAR": 1, "AR": 2, "TYPE": 501, "ADRESSE": "RUE DU BARON D'OBIN, 15 - AMBRESINEAU", "DOMAINE": "V", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 285, "H": 28, "ANOBS": 1992, "INTERET": "P", "ENV1": "I", "ENV2": "V", "REF": null, "COMMENTAIR": "Près du mur, côté voirie ; à 2 m d'un hêtre à feuilles de chêne.", "EVOLUTION": null, "PHOTO": null, "ETAPE": "O", "GENRE": "Fagus", "SP": "sylvatica", "CULTIVAR": "purpurea", "SPFR": "Hêtre pourpre" }, "geometry": { "type": "Point", "coordinates": [ 5.025652482494245, 50.626433502616067 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 5294.0, "INSLOC": 64075, "SITEAR": 3, "AR": 1, "TYPE": 501, "ADRESSE": "AVENUE DES POMMIERS, 60 - AMBRESINEAU", "DOMAINE": "V", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 320, "H": 20, "ANOBS": 1992, "INTERET": "P", "ENV1": "I", "ENV2": "U", "REF": null, "COMMENTAIR": "Au croisement avec la rue de la Tombale ; tas de pavés au pied.", "EVOLUTION": null, "PHOTO": null, "ETAPE": "O", "GENRE": "Aesculus", "SP": "hippocastanum", "CULTIVAR": null, "SPFR": "Marronnier d'Inde" }, "geometry": { "type": "Point", "coordinates": [ 5.032233981855467, 50.627176207114246 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 10248.0, "INSLOC": 64075, "SITEAR": 4, "AR": 1, "TYPE": 502, "ADRESSE": "RUE DU SOLEIL", "DOMAINE": "P", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 230, "H": 21, "ANOBS": 1992, "INTERET": "F,P", "ENV1": "G", "ENV2": "V", "REF": null, "COMMENTAIR": "Chapelle Saint-Donat de 1806 (autour de la) ; 3 sujets (+ 220/210 cm).", "EVOLUTION": null, "PHOTO": "ftp://intra.mrw.wallonie.be/dgarne/DNF/ArbeRem/Wasseiges/64075004001-Tilleul.JPG", "ETAPE": "O", "GENRE": "Tilia", "SP": "x europaea", "CULTIVAR": null, "SPFR": "Tilleul de Hollande" }, "geometry": { "type": "Point", "coordinates": [ 5.039723288321126, 50.635981038668504 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 699.0, "INSLOC": 64075, "SITEAR": 11, "AR": 1, "TYPE": 501, "ADRESSE": "DREVE DES LORRAINS, 2", "DOMAINE": "V", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 446, "H": 26, "ANOBS": 2018, "INTERET": "P", "ENV1": "I", "ENV2": "P", "REF": null, "COMMENTAIR": "Fomes fomentarius", "EVOLUTION": "1992-6-446-26", "PHOTO": null, "ETAPE": "O", "GENRE": "Fagus", "SP": "sylvatica", "CULTIVAR": "purpurea", "SPFR": "Hêtre pourpre" }, "geometry": { "type": "Point", "coordinates": [ 5.010498855742638, 50.623074975815236 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 8870.0, "INSLOC": 64075, "SITEAR": 11, "AR": 5, "TYPE": 502, "ADRESSE": "DREVE DES LORRAINS, 2", "DOMAINE": "V", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 256, "H": 29, "ANOBS": 1992, "INTERET": "P", "ENV1": "G", "ENV2": "A", "REF": null, "COMMENTAIR": "Six sujets plantés en cercle ; très beau groupe.", "EVOLUTION": null, "PHOTO": null, "ETAPE": "O", "GENRE": "Tilia", "SP": "x europaea", "CULTIVAR": null, "SPFR": "Tilleul de Hollande" }, "geometry": { "type": "Point", "coordinates": [ 5.010748064703141, 50.624248227307099 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 12078.0, "INSLOC": 64075, "SITEAR": 14, "AR": 1, "TYPE": 501, "ADRESSE": "RUE DE LA BRASSERIE", "DOMAINE": "V", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 345, "H": 27, "ANOBS": 2011, "INTERET": "R,P", "ENV1": "I", "ENV2": "V", "REF": null, "COMMENTAIR": "Face au n°11.", "EVOLUTION": "1992-6-310-27", "PHOTO": null, "ETAPE": "O", "GENRE": "Fraxinus", "SP": "excelsior", "CULTIVAR": null, "SPFR": "Frêne commun" }, "geometry": { "type": "Point", "coordinates": [ 5.019937756894243, 50.609786593311128 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 12983.0, "INSLOC": 64075, "SITEAR": 12, "AR": 1, "TYPE": 501, "ADRESSE": "RUE DE LA BRASSERIE", "DOMAINE": "P", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 272, "H": 20, "ANOBS": 1992, "INTERET": "F,P", "ENV1": "I", "ENV2": "V", "REF": null, "COMMENTAIR": "Cimetière (devant l'entrée du) ; semble atteint par herbicide ; autrement très beau.", "EVOLUTION": null, "PHOTO": null, "ETAPE": "O", "GENRE": "Tilia", "SP": "x europaea", "CULTIVAR": null, "SPFR": "Tilleul de Hollande" }, "geometry": { "type": "Point", "coordinates": [ 5.023590505211944, 50.610220692249449 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 3364.0, "INSLOC": 64075, "SITEAR": 18, "AR": 1, "TYPE": 501, "ADRESSE": "RUE DE HANNECHE, 15", "DOMAINE": "V", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 295, "H": 10, "ANOBS": 1992, "INTERET": "T,P", "ENV1": "I", "ENV2": "U", "REF": null, "COMMENTAIR": "Face à la rue des Ayisses ; au coin de la maison ; mesuré à la base ; 2 branches ; superbe.", "EVOLUTION": null, "PHOTO": null, "ETAPE": "O", "GENRE": "Taxus", "SP": "baccata", "CULTIVAR": null, "SPFR": "If commun" }, "geometry": { "type": "Point", "coordinates": [ 5.046383954957141, 50.592439774896121 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 9306.0, "INSLOC": 64075, "SITEAR": 17, "AR": 1, "TYPE": 501, "ADRESSE": "RUE DE CIPLET", "DOMAINE": "P", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 124, "H": 14, "ANOBS": 2010, "INTERET": "F", "ENV1": "I", "ENV2": "V", "REF": null, "COMMENTAIR": "Chapelle N-D des Champs.", "EVOLUTION": "1992-110-14", "PHOTO": null, "ETAPE": "O", "GENRE": "Pinus", "SP": "sylvestris", "CULTIVAR": null, "SPFR": "Pin sylvestre" }, "geometry": { "type": "Point", "coordinates": [ 5.049592654588391, 50.597045308602482 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 14507.0, "INSLOC": 64075, "SITEAR": 17, "AR": 2, "TYPE": 501, "ADRESSE": "RUE DE CIPLET", "DOMAINE": "P", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 158, "H": 13, "ANOBS": 2010, "INTERET": "F", "ENV1": "I", "ENV2": "V", "REF": null, "COMMENTAIR": "Chapelle N-D des Champs.", "EVOLUTION": "1992-102-13", "PHOTO": null, "ETAPE": "O", "GENRE": "Cedrus", "SP": "atlantica", "CULTIVAR": "'Glauca'", "SPFR": "Cèdre bleu de l'Atlas" }, "geometry": { "type": "Point", "coordinates": [ 5.049672192921789, 50.597144287008845 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 17297.0, "INSLOC": 64075, "SITEAR": 19, "AR": 1, "TYPE": 501, "ADRESSE": "RUE NOTRE-DAME DES CHAMPS", "DOMAINE": "P", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 400, "H": 23, "ANOBS": 2010, "INTERET": "P", "ENV1": "I", "ENV2": "U", "REF": null, "COMMENTAIR": "Devant le n° 9 ; saule têtard à retailler.", "EVOLUTION": null, "PHOTO": null, "ETAPE": "O", "GENRE": "Salix", "SP": "alba", "CULTIVAR": null, "SPFR": "Saule blanc" }, "geometry": { "type": "Point", "coordinates": [ 5.050006271632941, 50.597395540925142 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 5568.0, "INSLOC": 64075, "SITEAR": 15, "AR": 1, "TYPE": 502, "ADRESSE": "RUE DE PAGE", "DOMAINE": "P", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 100, "H": 8, "ANOBS": 1992, "INTERET": "F,D", "ENV1": "G", "ENV2": "V", "REF": null, "COMMENTAIR": "Chapelle Saint-Donat (autour de la) ; au croisement avec la rue de Crocq ; 2 sujets (+ 82 cm).", "EVOLUTION": null, "PHOTO": null, "ETAPE": "O", "GENRE": "Carpinus", "SP": "betulus", "CULTIVAR": "'Fastigiata'", "SPFR": "Charme commun à port fastigié" }, "geometry": { "type": "Point", "coordinates": [ 5.010250325684995, 50.605798421922522 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 7271.0, "INSLOC": 64075, "SITEAR": 13, "AR": 1, "TYPE": 501, "ADRESSE": "RUE DE LA BRASSERIE", "DOMAINE": "V", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 280, "H": 28, "ANOBS": 1992, "INTERET": "R,P", "ENV1": "I", "ENV2": "A", "REF": null, "COMMENTAIR": "A côté du n°4 ; pied cornier.", "EVOLUTION": null, "PHOTO": null, "ETAPE": "O", "GENRE": "Fraxinus", "SP": "excelsior", "CULTIVAR": null, "SPFR": "Frêne commun" }, "geometry": { "type": "Point", "coordinates": [ 5.018571519569304, 50.608673603998199 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 9305.0, "INSLOC": 64075, "SITEAR": 16, "AR": 2, "TYPE": 501, "ADRESSE": "RUE GRANDE", "DOMAINE": "V", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 302, "H": 24, "ANOBS": 1998, "INTERET": "P", "ENV1": "I", "ENV2": "U", "REF": null, "COMMENTAIR": "Presbytère.", "EVOLUTION": null, "PHOTO": null, "ETAPE": "O", "GENRE": "Acer", "SP": "pseudoplatanus", "CULTIVAR": null, "SPFR": "Erable sycomore" }, "geometry": { "type": "Point", "coordinates": [ 5.015283346232466, 50.609051081347722 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 18448.0, "INSLOC": 64075, "SITEAR": 16, "AR": 1, "TYPE": 501, "ADRESSE": "RUE GRANDE", "DOMAINE": "V", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 335, "H": 22, "ANOBS": 1998, "INTERET": "P", "ENV1": "I", "ENV2": "U", "REF": null, "COMMENTAIR": "Presbytère ; au bord du \"Rhée\".", "EVOLUTION": null, "PHOTO": null, "ETAPE": "O", "GENRE": "Aesculus", "SP": "hippocastanum", "CULTIVAR": null, "SPFR": "Marronnier d'Inde" }, "geometry": { "type": "Point", "coordinates": [ 5.015149320973376, 50.609142690327332 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 8209.0, "INSLOC": 64075, "SITEAR": 8, "AR": 1, "TYPE": 501, "ADRESSE": "RUE DE NAMUR, 18", "DOMAINE": "V", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 195, "H": 12, "ANOBS": 1992, "INTERET": "D,P", "ENV1": "I", "ENV2": "V", "REF": null, "COMMENTAIR": null, "EVOLUTION": null, "PHOTO": null, "ETAPE": "O", "GENRE": "Corylus", "SP": "colurna", "CULTIVAR": null, "SPFR": "Noisetier de Byzance" }, "geometry": { "type": "Point", "coordinates": [ 5.003620875234995, 50.618947507311489 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 16866.0, "INSLOC": 64075, "SITEAR": 6, "AR": 1, "TYPE": 501, "ADRESSE": "RUE DE NAMUR, 9", "DOMAINE": "V", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 595, "H": 20, "ANOBS": 1992, "INTERET": "P", "ENV1": "I", "ENV2": "V", "REF": null, "COMMENTAIR": "Très belle cépée de 9 troncs ; soudés l'un contre l'autre ; mesure prise au niveau du sol ; circ. des troncs à 1,5 m (+ 170/165/165/145/125/106/100/99/80 cm) ; petites branches mortes ; à élaguer.", "EVOLUTION": null, "PHOTO": null, "ETAPE": "O", "GENRE": "Aesculus", "SP": "hippocastanum", "CULTIVAR": null, "SPFR": "Marronnier d'Inde" }, "geometry": { "type": "Point", "coordinates": [ 5.004804487730807, 50.619465057669849 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 16865.0, "INSLOC": 64075, "SITEAR": 5, "AR": 1, "TYPE": 501, "ADRESSE": "RUE DE NAMUR", "DOMAINE": "P", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 135, "H": 10, "ANOBS": 1992, "INTERET": "P", "ENV1": "I", "ENV2": "V", "REF": null, "COMMENTAIR": "Au croisement avec la rue de Meeffe ; ilôt directionnel ; semble souffrir d'herbicide.", "EVOLUTION": null, "PHOTO": null, "ETAPE": "O", "GENRE": "Tilia", "SP": "x europaea", "CULTIVAR": null, "SPFR": "Tilleul de Hollande" }, "geometry": { "type": "Point", "coordinates": [ 5.00573681570593, 50.620252205035364 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 4735.0, "INSLOC": 64075, "SITEAR": 11, "AR": 3, "TYPE": 501, "ADRESSE": "DREVE DES LORRAINS, 2", "DOMAINE": "V", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 403, "H": 21, "ANOBS": 1992, "INTERET": "P", "ENV1": "I", "ENV2": "A", "REF": null, "COMMENTAIR": null, "EVOLUTION": null, "PHOTO": null, "ETAPE": "O", "GENRE": "Castanea", "SP": "sativa", "CULTIVAR": null, "SPFR": "Châtaigner commun" }, "geometry": { "type": "Point", "coordinates": [ 5.010217588595515, 50.623830749884227 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 3454.0, "INSLOC": 64075, "SITEAR": 11, "AR": 4, "TYPE": 501, "ADRESSE": "DREVE DES LORRAINS, 2", "DOMAINE": "V", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 350, "H": 26, "ANOBS": 1992, "INTERET": "P", "ENV1": "I", "ENV2": "A", "REF": null, "COMMENTAIR": "Isolé en prairie.", "EVOLUTION": null, "PHOTO": null, "ETAPE": "O", "GENRE": "Acer", "SP": "pseudoplatanus", "CULTIVAR": null, "SPFR": "Erable sycomore" }, "geometry": { "type": "Point", "coordinates": [ 5.010278571985396, 50.624028246695552 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 6444.0, "INSLOC": 64075, "SITEAR": 9, "AR": 1, "TYPE": 502, "ADRESSE": "RUE DU BARON D'OBIN, 176", "DOMAINE": "V", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 410, "H": 24, "ANOBS": 1992, "INTERET": "P", "ENV1": "G", "ENV2": "U", "REF": null, "COMMENTAIR": "En façade ; très beaux ; troncs courts ; 2 sujets (+ 365 cm).", "EVOLUTION": null, "PHOTO": null, "ETAPE": "O", "GENRE": "Fagus", "SP": "sylvatica", "CULTIVAR": null, "SPFR": "Hêtre commun" }, "geometry": { "type": "Point", "coordinates": [ 4.999617152853752, 50.624648521849906 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 5806.0, "INSLOC": 64075, "SITEAR": 9, "AR": 2, "TYPE": 501, "ADRESSE": "RUE DU BARON D'OBIN, 176", "DOMAINE": "V", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 170, "H": 17, "ANOBS": 1992, "INTERET": "P", "ENV1": "I", "ENV2": "U", "REF": null, "COMMENTAIR": "En façade,", "EVOLUTION": null, "PHOTO": null, "ETAPE": "O", "GENRE": "Fraxinus", "SP": "excelsior", "CULTIVAR": "'Pendula'", "SPFR": "Frêne pleureur" }, "geometry": { "type": "Point", "coordinates": [ 4.999642552377, 50.624725854032299 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 13461.0, "INSLOC": 64075, "SITEAR": 10, "AR": 2, "TYPE": 502, "ADRESSE": "RUE DU BARON D'OBIN", "DOMAINE": "V", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 320, "H": 30, "ANOBS": 1992, "INTERET": "D,P", "ENV1": "G", "ENV2": "A", "REF": null, "COMMENTAIR": "En prairie ; le long de la Mehaigne ; 4 sujets (+ 312/285/280 cm).", "EVOLUTION": null, "PHOTO": null, "ETAPE": "O", "GENRE": "Acer", "SP": "saccharinum", "CULTIVAR": null, "SPFR": "Erable argenté" }, "geometry": { "type": "Point", "coordinates": [ 4.989327513611684, 50.625379696743252 ] } }, +{ "type": "Feature", "properties": { "OBJECTID": 16381.0, "INSLOC": 64075, "SITEAR": 10, "AR": 1, "TYPE": 502, "ADRESSE": "RUE DU BARON D'OBIN", "DOMAINE": "V", "ARBRHAIE": "A", "DATEOFF": "20130222000000", "SANIT": null, "TRAD": null, "CIRC": 328, "H": 30, "ANOBS": 1992, "INTERET": "P", "ENV1": "G", "ENV2": "A", "REF": null, "COMMENTAIR": "En prairie ; + marronniers, frênes etc.", "EVOLUTION": null, "PHOTO": null, "ETAPE": "O", "GENRE": "Quercus", "SP": "rubra", "CULTIVAR": null, "SPFR": "Chêne rouge d'Amérique" }, "geometry": { "type": "Point", "coordinates": [ 4.989827284121314, 50.626227015633404 ] } } +] +} diff --git a/utils/lib64 b/utils/lib64 new file mode 120000 index 0000000..7951405 --- /dev/null +++ b/utils/lib64 @@ -0,0 +1 @@ +lib \ No newline at end of file diff --git a/utils/requirements.txt b/utils/requirements.txt new file mode 100644 index 0000000..a5f9017 --- /dev/null +++ b/utils/requirements.txt @@ -0,0 +1 @@ +geojson==2.5.0