Mercurial > dive4elements > river
view flys-backend/contrib/shpimporter/utils.py @ 4970:174fbaa3d344 dami
Add handling of River Names and remove target_src parameter
This is the first step to make the shpimporter into a more
generic geo importer that communicates directly (not only over
ogr) with the database.
Untested with Oracle
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Wed, 13 Feb 2013 12:02:30 +0100 |
parents | c0a58558b817 |
children | a6ee62a070b0 |
line wrap: on
line source
import os import sys from shpimporter import DEBUG, INFO, ERROR try: from osgeo import ogr except ImportErrror: import ogr SHP='.shp' SQL_SELECT_ID="SELECT id FROM %s WHERE %s = '%s'" def findShapefiles(path): shapes = [] for root, dirs, files in os.walk(path): if len(files) == 0: continue DEBUG("Processing directory '%s' with %i files " % (root, len(files))) for f in files: idx = f.find(SHP) if (idx+len(SHP)) == len(f): shapes.append((f.replace(SHP, ''), root + "/" + f)) return shapes def getRiverId(dbconn, name): """ Returns the id of the river "name" Dbconn must be a python database connection api compliant object """ cur = dbconn.cursor() select_stmt = SQL_SELECT_ID % ("rivers", "name", name) cur.execute(select_stmt) row = cur.fetchone() if row: return row[0] else: return 0 def getUTF8(string): """ Tries to convert the string to a UTF-8 encoding by first checking if it is UTF-8 and then trying cp1252 """ try: return unicode.encode(unicode(string, "UTF-8"), "UTF-8") except UnicodeDecodeError: # Probably European Windows names so lets try again return unicode.encode(unicode(string, "cp1252"), "UTF-8") def getUTF8Path(path): """ Tries to convert path to utf-8 by first checking the filesystemencoding and trying the default windows encoding afterwards. Returns a valid UTF-8 encoded unicode object or throws a UnicodeDecodeError """ try: return unicode.encode(unicode(path, sys.getfilesystemencoding()), "UTF-8") except UnicodeDecodeError: # Probably European Windows names so lets try again return unicode.encode(unicode(path, "cp1252"), "UTF-8")