diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-02-27 20:44:52 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-06-17 13:21:27 +0200 |
commit | 0f3229a119e53054d98c5e878a9581403628cd08 (patch) | |
tree | e07ad2e91e2544f7b2d61e8f3f653fdda26bfd52 /scripts | |
parent | cfabd636d0a6d84e8377be3e4d041b4e75ddda9a (diff) | |
download | Ishtar-0f3229a119e53054d98c5e878a9581403628cd08.tar.bz2 Ishtar-0f3229a119e53054d98c5e878a9581403628cd08.zip |
Migrate to python 3 - Clean old migrations and some old scripts
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/import_towns_from_osm.py | 110 | ||||
-rw-r--r-- | scripts/pre_import_sra_files.py | 79 |
2 files changed, 0 insertions, 189 deletions
diff --git a/scripts/import_towns_from_osm.py b/scripts/import_towns_from_osm.py deleted file mode 100755 index fb301f09f..000000000 --- a/scripts/import_towns_from_osm.py +++ /dev/null @@ -1,110 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -""" -Import towns from OpenStreetMap data. -Take an OSM xml file for argument. - -To get an OSM file (with a bounding box adapted to your needs): -curl --location --globoff "http://www.informationfreeway.org/api/0.6/node[place=village|town|city][bbox=-5.53711,41.90228,8.96484,51.50874]" -o city.osm -or from a whole xml/pbf export: -./osmosis --read-pbf ~/france-20110125.osm.pbf --node-key-value keyValueList="place.village,place.town,place.city" --write-xml city.osm -""" - -import sys -sys.path.append('.') - -from django.core.management import setup_environ -from django.core.exceptions import ObjectDoesNotExist -from django.contrib.gis.geos import Point -import settings - -setup_environ(settings) - -from optparse import OptionParser -from xml.parsers import expat - -from ishtar_base import models - -usage = "usage: %prog osm_file.xml" -parser = OptionParser(usage=usage) - -(options, args) = parser.parse_args() - -try: - assert len(args) == 1 -except AssertionError: - parser.error("You must provide one XML file") - - -ATTRS = [u"lat", u"lon"] - -# key : (mandatory, [restraint to keys]) -TAGS = {u"place":(True, [u"village", u"town", u"city"]), - u"ref:INSEE":(True, []), - u"population":(False, []) - } - -class TownParser: - - def __init__(self): - self._parser = expat.ParserCreate() - self._parser.returns_unicode = True - self._parser.StartElementHandler = self.start - self._parser.EndElementHandler = self.end - self._parser.CharacterDataHandler = self.data - self.town = {} - self.number = 0 - - def feed(self, data): - self._parser.ParseFile(data) - - def close(self): - self._parser.Parse("", 1) # end of data - del self._parser # get rid of circular references - - def start(self, tag, attrs): - if tag == u"node": - self.town = {} - for attr in ATTRS: - if attr in attrs: - self.town[attr] = attrs[attr] - if tag == u"tag": - if not u"k" in attrs or not u"v" in attrs: - return - if attrs[u"k"] in TAGS: - limit = TAGS[attrs[u"k"]][1] - if limit and \ - (attrs[u"v"] not in limit or \ - (type(limit) == unicode and limit not in attrs[u"v"])): - self.town["DEL"] = True - return - self.town[attrs[u"k"]] = attrs[u"v"] - - def end(self, tag): - if tag == u"node" and self.town and "DEL" not in self.town: - for k in TAGS: - if TAGS[k][0] and k not in self.town: - return - self.number += 1 - try: - town = models.Town.objects.get(numero_insee=self.town["ref:INSEE"]) - except ObjectDoesNotExist: - return - town.center = Point(float(self.town['lon']), float(self.town['lat']), - srid=4326) - town.save() - print town, "updated" - - def data(self, data): - pass - -p = TownParser() - -try: - p.feed(file(args[0])) - print u"%d towns updated" % p.number -except (IOError, expat.ExpatError): - parser.error("Incorrect XML file") - - diff --git a/scripts/pre_import_sra_files.py b/scripts/pre_import_sra_files.py deleted file mode 100644 index 07e4db1df..000000000 --- a/scripts/pre_import_sra_files.py +++ /dev/null @@ -1,79 +0,0 @@ -import unicodecsv -import datetime - -from django.conf import settings - -from ishtar_common.data_importer import Importer - - -def get_year(value): - try: - for fmt in ['%d/%m/%Y', '%d/%m/%Y']: - return datetime.datetime.strptime(value, fmt).year - except: - pass - -index_list = [] - - -def treatment(data): - internal_ref = data[37].strip() - creation = data[34].strip() - reception = data[19].strip() - yr = get_year(creation) - if not yr: - yr = get_year(reception) - - idx, year = None, None - if '-' in internal_ref: - year, y_idx = internal_ref.split('-') - if len(year) == 4: # 2007-XXXX - try: - year = int(year) - idx = int(y_idx) - except ValueError: - pass - elif '.' in internal_ref: - year, y_idx = internal_ref.split('.') - if len(year) == 4: # 2011.XXXX - try: - year = int(year) - idx = int(y_idx) - except ValueError: - pass - if not idx: - idx = int(internal_ref) - if year and year != yr: - yr = year - assert yr # we should absolutly have a year! - - external_id = "SRA{}-{}".format(yr, idx) - assert (yr, external_id) not in index_list - index_list.append((yr, external_id)) - return yr, idx, external_id - - -new_datas = [] -with open('plouf.csv') as csv_file: - datas = [line for line in unicodecsv.reader(csv_file, - encoding='utf-8')] - for idx, data in enumerate(datas): - if idx < 3: - # headers - data.append('annee') - data.append('identifiant numerique') - data.append('external_id') - new_datas.append(data) - continue - try: - year, idx, external_id = treatment(data) - data.append(year) - data.append(idx) - data.append(external_id) - new_datas.append(data) - except Exception as e: - print("Line {}: {}".format(idx + 1, e)) - -csv = Importer()._get_csv(new_datas, empty=u'') -with open('plouf2.csv', 'w') as fle: - fle.write(csv.encode('utf-8')) |