Esempio n. 1
0
def resolve(code):
    """
    Resolve an EPSG code to an object
    """

    global _registry
    try:
        return _registry[code]
    except TypeError:
        pass
    except KeyError:
        return None

    path = os.path.join(os.path.dirname(__file__), os.path.pardir, os.path.pardir, 'data', 'epsg-registry.sqlite')
    engine = create_engine('sqlite:///%s' % path)
    _registry = Registry(engine)
    return _registry.get(code, None)
Esempio n. 2
0
def main():
    """
    Update the local registry
    """

    parser = argparse.ArgumentParser(
        description='Update the EPSG SQLite database from the online registry.'
    )
    parser.add_argument('file',
                        metavar='FILE',
                        nargs=1,
                        help='The SQLite database file to update')
    args = parser.parse_args()
    filename = abspath(args.file[0])
    try:
        engine = create_engine('sqlite:///%s' % filename)
        # create an empty Registry if it is not already populated
        registry = Registry(engine, loader=False)
        registry.init(loader=False)  # re-initialise the database
        loader = registry.getLoader()
        registry.update(loader)
        del registry
        del engine
    except KeyboardInterrupt:
        print >> stderr, "\nInterrupted!"
Esempio n. 3
0
def main():
    """
    Update the local registry
    """

    parser = argparse.ArgumentParser(description='Update the EPSG SQLite database from the online registry.')
    parser.add_argument('file', metavar='FILE', nargs=1,
                        help='The SQLite database file to update')
    args = parser.parse_args()
    filename = abspath(args.file[0])
    try:
        engine = create_engine('sqlite:///%s' % filename)
        # create an empty Registry if it is not already populated
        registry = Registry(engine, loader=False)
        registry.init(loader=False) # re-initialise the database
        loader = registry.getLoader()
        registry.update(loader)
        del registry
        del engine
    except KeyboardInterrupt:
        print >> stderr, "\nInterrupted!"
from __future__ import print_function
import os
from sqlalchemy import create_engine
from epsg import Registry, schema

db = "epsg-registry-cache.db"
if os.path.exists(db):
    engine = create_engine("sqlite:///epsg-registry-cache.db")
    registry = Registry(engine)
else:
    engine = create_engine("sqlite:///epsg-registry-cache.db")
    registry = Registry(engine)
    print("Downloading EPSG registry, this takes a while...")
    registry.init()

west, south, east, north = -61.83, 11.97, -61.57, 12.26

crss = (
    registry.session.query(schema.ProjectedCRS)
    .join(schema.ProjectedCRS.domainOfValidity)
    .filter(schema.AreaOfUse.westBoundLongitude <= west)
    .filter(schema.AreaOfUse.southBoundLatitude <= south)
    .filter(schema.AreaOfUse.eastBoundLongitude >= east)
    .filter(schema.AreaOfUse.northBoundLatitude >= north)
    .all()
)

for crs in crss:
    print("-------------------------------------------------------------")
    print(crs.name, "({})".format(crs.identifier))
    print(crs.scope)
Esempio n. 5
0
 def setUp(self):
     self.registry = Registry(loader=False)
     xml = load.XML.FromFile(getTestFile())
     self.loader = load.XMLLoader(xml)
     self.loader.load()
Esempio n. 6
0
 def testUpdate(self):
     registry2 = Registry(loader=False)
     registry2.update(self.registry)
     self.assertEqual(len(self.registry), len(registry2))
Esempio n. 7
0
 def setUp(self):
     xml = load.XML.FromFile(getTestFile())
     loader = load.XMLLoader(xml)
     loader.load()
     self.registry = Registry(loader=loader)
Esempio n. 8
0
class TestRegistry(unittest.TestCase):

    def setUp(self):
        xml = load.XML.FromFile(getTestFile())
        loader = load.XMLLoader(xml)
        loader.load()
        self.registry = Registry(loader=loader)

    def testGetItem(self):
        value = self.registry['urn:ogc:def:crs:EPSG::27700']
        self.assertIsInstance(value, schema.ProjectedCRS)

        with self.assertRaises(TypeError):
            self.registry[42]

        with self.assertRaises(KeyError):
            self.registry['bad key']

    def testSetItem(self):
        builder = SchemaBuilder()
        key = 'urn:ogc:def:area:EPSG::0001'
        value = builder.buildAreaOfUse()
        value.identifier = key  # replace the id with one not in the test database

        self.registry[key] = value
        self.assertEqual(value, self.registry[key])

    def testDelItem(self):
        del self.registry['urn:ogc:def:crs:EPSG::27700']
        with self.assertRaises(KeyError):
            self.registry['urn:ogc:def:crs:EPSG::27700']

    def testLen(self):
        self.assertEqual(45, len(self.registry))

    def testUpdate(self):
        registry2 = Registry(loader=False)
        registry2.update(self.registry)
        self.assertEqual(len(self.registry), len(registry2))

    def testContains(self):
        self.assertIn('urn:ogc:def:crs:EPSG::27700', self.registry)
        self.assertNotIn('invalid key', self.registry)

    def testIter(self):
        count = 0
        for key in self.registry:
            self.assertIsInstance(key, (str, unicode))
            count += 1
        self.assertEqual(45, count)

    def testItervalues(self):
        count = 0
        for value in self.registry.itervalues():
            self.assertIsInstance(value, schema.Identifier)
            count += 1
        self.assertEqual(45, count)

    def testIteritems(self):
        count = 0
        for item in self.registry.iteritems():
            self.assertIsInstance(item, tuple)
            self.assertEqual(2, len(item))
            key, value = item
            self.assertIsInstance(key, (str, unicode))
            self.assertIsInstance(value, schema.Identifier)
            count += 1
        self.assertEqual(45, count)