Changeset 650 for trunk


Ignore:
Timestamp:
Sep 16, 2008, 11:19:44 AM (11 years ago)
Author:
Nick Burch
Message:

dracos postbox import

Location:
trunk/npemap.org.uk/scripts
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/npemap.org.uk/scripts/generic-python-import/generic_importer.py

    r649 r650  
    3434import os
    3535import sys
     36import re
    3637
    3738# Database settings
     
    5253                self.download = False
    5354                self.confirm_update = True
     55
     56        def generate_easting_northing(self,pc):
     57                "Handle the lat+long => e+n bit"
     58                if not pc:
     59                        return
     60                pc["easting"] = None
     61                pc["northing"] = None
     62                pc["ie_easting"] = None
     63                pc["ie_northing"] = None
     64
     65                # Turn lat+long into easting+northing
     66                # All NI postcodes are BT
     67                if pc["outer"][0:2] == 'BT':
     68                        osll = turn_wgs84_into_osie36(pc["latitude"],pc["longitude"], 0)
     69                        en = turn_osie36_into_eastingnorthing(osll[0], osll[1])
     70                        pc["ie_easting"] = en[0]
     71                        pc["ie_northing"] = en[1]
     72                else:
     73                        osll = turn_wgs84_into_osgb36(pc["latitude"],pc["longitude"], 0)
     74                        en = turn_osgb36_into_eastingnorthing(osll[0], osll[1])
     75                        pc["easting"] = en[0]
     76                        pc["northing"] = en[1]
    5477
    5578        def handle_arguments(self, argv):
     
    90113                else:
    91114                        print "Unable to find ID for source '%s' - error code %d" % (self.source_name, len(ids))
     115                        print "Please add it to the database"
     116                        return
    92117
    93118
     
    255280                pc["raw_outer"] = parts[2]
    256281                pc["raw_inner"] = parts[3]
    257 
    258                 pc["easting"] = None
    259                 pc["northing"] = None
    260                 pc["ie_easting"] = None
    261                 pc["ie_northing"] = None
    262 
    263                 # Turn lat+long into easting+northing
    264                 # All NI postcodes are BT
    265                 if pc["outer"][0:2] == 'BT':
    266                         osll = turn_wgs84_into_osie36(parts[0], parts[1], 0)
    267                         en = turn_osie36_into_eastingnorthing(osll[0], osll[1])
    268                         pc["ie_easting"] = en[0]
    269                         pc["ie_northing"] = en[1]
    270                 else:
    271                         osll = turn_wgs84_into_osgb36(parts[0], parts[1], 0)
    272                         en = turn_osgb36_into_eastingnorthing(osll[0], osll[1])
    273                         pc["easting"] = en[0]
    274                         pc["northing"] = en[1]
     282                pc["latitude"] = parts[0]
     283                pc["longitude"] = parts[1]
     284
     285                self.generate_easting_northing(pc)
    275286
    276287                # All done
     
    286297                        url="http://www.dracos.co.uk/play/locating-postboxes/export.php?rm=1"
    287298                )
     299                self.valid_pc = re.compile("^([A-Z]+\d+)(\d[A-Z][A-Z])$")
    288300
    289301        def process_line(self,line):
    290302                "Process one line of the file"
    291                 # TODO
    292                 return None
     303                line = line[0:-1]
     304                if line[0:1] == "#":
     305                        return
     306                if line.startswith("Ref"):
     307                        return
     308
     309                parts = line.split("\t")
     310                if not len(parts) == 6:
     311                        print "Invalid line '%s'" % line
     312                        return
     313
     314                if not parts[1]:
     315                        # No postcode
     316                        return
     317
     318                # Does the postcode part look valid?
     319                match = self.valid_pc.match(parts[1])
     320                if not match:
     321                        return
     322                outer, inner = match.groups()
     323
     324                pc = {}
     325                pc["raw"] = parts[1]
     326                pc["outer"] = outer
     327                pc["inner"] = inner
     328                pc["raw_outer"] = outer
     329                pc["raw_inner"] = inner
     330                pc["latitude"] = parts[4]
     331                pc["longitude"] = parts[5]
     332
     333                self.generate_easting_northing(pc)
     334
     335                # All done
     336                return pc
  • trunk/npemap.org.uk/scripts/postboxes-importer

    • Property svn:ignore set to
      *.pyc
      *.swp
      currentlist
Note: See TracChangeset for help on using the changeset viewer.