Esempio n. 1
0
 def saveNodesSHP(self, targetPath, isFake=False):
     "Save nodes to a shapefile"
     geometry_store.save(
         store.replaceFileExtension(targetPath, "shp"),
         self.getProj4(),
         [shapely.geometry.asShape(node) for node in self.cycleNodes(isFake)],
     )
Esempio n. 2
0
 def saveSubnetsSHP(self, targetPath):
     'Save subnets to a shapefile'
     # If there are no subnets,
     if not self.countSubnets():
         return
     # Save
     geometry_store.save(store.replaceFileExtension(targetPath, 'shp'), self.getProj4(), [shapely.geometry.asShape(x) for x in self.cycleSubnets()])
Esempio n. 3
0
 def saveNodesSHP(self, targetPath, isFake=False):
     'Save nodes to a shapefile'
     geometry_store.save(store.replaceFileExtension(targetPath, 'shp'),
                         self.getProj4(), [
                             shapely.geometry.asShape(node)
                             for node in self.cycleNodes(isFake)
                         ])
Esempio n. 4
0
 def saveSubnetsSHP(self, targetPath):
     'Save subnets to a shapefile'
     # If there are no subnets,
     if not self.countSubnets():
         return
     # Save
     geometry_store.save(
         store.replaceFileExtension(targetPath, 'shp'), self.getProj4(),
         [shapely.geometry.asShape(x) for x in self.cycleSubnets()])
Esempio n. 5
0
 def saveSegmentsSHP(self, targetPath, is_existing=None):
     # If there are no segments,
     if not self.countSegments(is_existing):
         return
     # Save
     return geometry_store.save(
         store.replaceFileExtension(targetPath, "shp"),
         self.getProj4(),
         [shapely.geometry.asShape(x) for x in self.cycleSegments(is_existing)],
     )
Esempio n. 6
0
 def saveSegmentsSHP(self, targetPath, is_existing=None):
     # If there are no segments,
     if not self.countSegments(is_existing):
         return
     # Save
     return geometry_store.save(
         store.replaceFileExtension(targetPath, 'shp'), self.getProj4(), [
             shapely.geometry.asShape(x)
             for x in self.cycleSegments(is_existing)
         ])
    def test(self):
        'Run tests'

        print 'Save and load a SHP file without attributes'
        path = self.getPath('.shp')
        geometry_store.save(path, geometry_store.proj4LL, shapelyGeometries)
        result = geometry_store.load(path)
        result_proj = result[0].strip()
        # In some environments, proj seems to drop the ellps param which seems redundant anyway
        # self.assertEqual(result[0].strip(), geometry_store.proj4LL)
        self.assertTrue ( result_proj == geometry_store.proj4LL 
                or result_proj == geometry_store.proj4LL.replace("+ellps=WGS84 ", "") )
        self.assertEqual(len(result[1]), len(shapelyGeometries))

        print 'Save and load a SHP file with attributes'
        path = self.getPath('.shp')
        geometry_store.save(path, geometry_store.proj4LL, shapelyGeometries, fieldPacks, fieldDefinitions)
        result = geometry_store.load(path)
        self.assertEqual(len(result[2]), len(fieldPacks))
        for shapelyGeometry, fieldPack in itertools.izip(result[1], result[2]):
            print
            for fieldValue, (fieldName, fieldType) in itertools.izip(fieldPack, result[3]):
                print '%s = %s' % (fieldName, fieldValue)
            print shapelyGeometry

        print 'Save a SHP file with attributes with different targetProj4'
        path = self.getPath('.shp')
        geometry_store.save(path, geometry_store.proj4LL, shapelyGeometries, fieldPacks, fieldDefinitions, targetProj4=geometry_store.proj4SM)
        result = geometry_store.load(path)
        self.assertNotEqual(result[0].strip(), geometry_store.proj4LL)

        print 'Load a SHP file with attributes with different targetProj4'
        path = self.getPath('.shp')
        geometry_store.save(path, geometry_store.proj4LL, shapelyGeometries, fieldPacks, fieldDefinitions)
        result = geometry_store.load(path, targetProj4=geometry_store.proj4SM)
        self.assertNotEqual(result[0].strip(), geometry_store.proj4LL)

        print 'Save and load a ZIP file without attributes using save'
        path = self.getPath('.shp.zip')
        geometry_store.save(path, geometry_store.proj4LL, shapelyGeometries)
        result = geometry_store.load(path)
        result_proj = result[0].strip()
        self.assertTrue ( result_proj == geometry_store.proj4LL 
                or result_proj == geometry_store.proj4LL.replace("+ellps=WGS84 ", "") )
        self.assertEqual(len(result[1]), len(shapelyGeometries))

        print 'Save and load a ZIP file with attributes using save'
        path = self.getPath('.shp.zip')
        geometry_store.save(path, geometry_store.proj4LL, shapelyGeometries, fieldPacks, fieldDefinitions)
        result = geometry_store.load(path)
        self.assertEqual(len(result[2]), len(fieldPacks))

        print 'Test saving and loading ZIP files of point coordinates'
        path = self.getPath('.shp.zip')
        geometry_store.save_points(path, geometry_store.proj4LL, [(0, 0)], fieldPacks, fieldDefinitions)
        result = geometry_store.load_points(path)
        self.assertEqual(result[1], [(0, 0)])

        print 'Test get_transform_point'
        transform_point0 = geometry_store.get_transform_point(geometry_store.proj4LL, geometry_store.proj4LL)
        transform_point1 = geometry_store.get_transform_point(geometry_store.proj4LL, geometry_store.proj4SM)
        self.assertNotEqual(transform_point0(0, 0), transform_point1(0, 0))

        print 'Test get_transform_geometry'
        transform_geometry = geometry_store.get_transform_geometry(geometry_store.proj4LL, geometry_store.proj4SM)
        self.assertEqual(type(transform_geometry(geometry.Point(0, 0))), type(geometry.Point(0, 0)))
        self.assertEqual(type(transform_geometry(ogr.CreateGeometryFromWkt('POINT (0 0)'))), type(ogr.CreateGeometryFromWkt('POINT (0 0)')))

        print 'Test get_coordinateTransformation'
        geometry_store.get_coordinateTransformation(geometry_store.proj4LL, geometry_store.proj4SM)

        print 'Test get_spatialReference'
        geometry_store.get_spatialReference(geometry_store.proj4LL)
        with self.assertRaises(geometry_store.GeometryError):
            geometry_store.get_spatialReference('')

        print 'Test get_geometryType'
        geometry_store.get_geometryType(shapelyGeometries)

        print 'Test save() when a fieldPack has fewer fields than definitions'
        with self.assertRaises(geometry_store.GeometryError):
            path = self.getPath('.shp')
            geometry_store.save(path, geometry_store.proj4LL, shapelyGeometries, [x[1:] for x in fieldPacks], fieldDefinitions)

        print 'Test save() when a fieldPack has more fields than definitions'
        with self.assertRaises(geometry_store.GeometryError):
            path = self.getPath('.shp')
            geometry_store.save(path, geometry_store.proj4LL, shapelyGeometries, [x * 2 for x in fieldPacks], fieldDefinitions)

        print 'Test save() when the driverName is unrecognized'
        with self.assertRaises(geometry_store.GeometryError):
            path = self.getPath('.shp')
            geometry_store.save(path, geometry_store.proj4LL, shapelyGeometries, driverName='')

        print 'Test load() when format is unrecognized'
        with self.assertRaises(geometry_store.GeometryError):
            path = self.getPath('')
            geometry_store.load(path)