Esempio n. 1
0
 def parse_string(self,value):
     elements = value.split('|')
     try:
         elements = [float(e) for e in elements]
         ## switch geometry creation based on length. length of 2 is a point
         ## otherwise a bounding box
         if len(elements) == 2:
             geom = Point(elements[0],elements[1])
         else:
             minx,miny,maxx,maxy = elements
             geom = Polygon(((minx,miny),
                             (minx,maxy),
                             (maxx,maxy),
                             (maxx,miny)))
         if not geom.is_valid:
             raise(DefinitionValidationError(self,'Parsed geometry is not valid.'))
         ret = GeometryDataset(1,geom)
         self._bounds = elements
     except ValueError:
         self._shp_key = value
         ## get the select_ugid test value.
         try:
             test_value = self.select_ugid.value
         except AttributeError:
             test_value = self.select_ugid
         if test_value is None:
             select_ugid = None
         else:
             select_ugid = test_value
         ret = ShpDataset(value,select_ugid=select_ugid)
     return(ret)
Esempio n. 2
0
 def test_unwrap(self):
     sd = ShpDataset('state_boundaries')        
     for axis in self.axes:
         w = Wrapper(axis=axis)
         for geom in sd.spatial.geom:
             new_geom = w.unwrap(geom)
             bounds = np.array(new_geom.bounds)
             self.assertFalse(np.any(bounds < axis))
Esempio n. 3
0
 def test_wrap(self):
     sd = ShpDataset('state_boundaries')
     for axis in self.axes:
         w = Wrapper(axis=axis)
         unwrapped = [w.unwrap(geom) for geom in sd.spatial.geom]
         for idx,unwrapped_geom in enumerate(unwrapped):
             new_geom = w.wrap(unwrapped_geom)
             self.assertFalse(unwrapped_geom.equals(new_geom))
             self.assertTrue(sd.spatial.geom[idx].almost_equals(new_geom))
Esempio n. 4
0
    def test_load(self):
        sds = ShpDataset('state_boundaries')
        geom = sds.spatial.geom
        self.assertEqual(geom.shape, (51, ))
        self.assertEqual(sds.temporal, None)
        self.assertEqual(sds.level, None)

        ssds = sds[0]
        self.assertEqual(ssds.spatial.uid, 1)
Esempio n. 5
0
 def test_aggregate(self):
     rd = self.test_data.get_rd('cancm4_tas')
     ods = NcDataset(request_dataset=rd)
     sd = ShpDataset('state_boundaries')
     sd.spatial.unwrap_geoms()
     utah = sd[23].spatial.geom[0]
     ods = ods.get_subset(spatial_operation='clip', igeom=utah)
     ods.aggregate()
     self.assertEqual(ods.value.shape, (3650, 1, 1, 1))
     self.assertEqual(ods.raw_value.shape, (3650, 1, 3, 3))
     self.assertNotEqual(ods.spatial.vector.raw_weights.shape,
                         ods.spatial.vector.weights.shape)
     self.assertEqual(ods.spatial.vector.uid[0], 1)
Esempio n. 6
0
 def test_subset(self):
     rds = [self.polar_stereographic, self.oblique_mercator]
     geom = ShpDataset('state_boundaries')
     dir_output = tempfile.mkdtemp()
     print(dir_output)
     for rd in rds:
         ops = ocgis.OcgOperations(dataset=rd,
                                   geom=geom,
                                   agg_selection=True,
                                   snippet=True,
                                   output_format='shp',
                                   dir_output=dir_output,
                                   prefix=os.path.split(rd.uri)[1])
         ret = ops.execute()
     shutil.rmtree(dir_output)
Esempio n. 7
0
    def parse_string(self, value):
        elements = value.split('|')
        try:
            elements = [float(e) for e in elements]
            ## switch geometry creation based on length. length of 2 is a point
            ## otherwise a bounding box
            if len(elements) == 2:
                geom = Point(elements[0], elements[1])
            else:
                minx, miny, maxx, maxy = elements
                geom = Polygon(
                    ((minx, miny), (minx, maxy), (maxx, maxy), (maxx, miny)))
            if not geom.is_valid:
                raise (DefinitionValidationError(
                    self, 'Parsed geometry is not valid.'))
            ret = GeometryDataset(1, geom)
            self._bounds = elements
        except ValueError:
            self._shp_key = value
            ## get the select_ugid test value.
            try:
                test_value = self.select_ugid.value
            except AttributeError:
                test_value = self.select_ugid
            if test_value is None:
                attr_filter = None
            else:
                attr_filter = {'ugid': test_value}
            ret = ShpDataset(value, attr_filter=attr_filter)


#            sc = ShpCabinet()
#            if value in sc.keys():
#                self._shp_key = value
#                ## get the select_ugid test value.
#                try:
#                    test_value = self.select_ugid.value
#                except AttributeError:
#                    test_value = self.select_ugid
#                ## return the geometries
#                if test_value is None:
#                    ret = sc.get_geoms(value)
#                else:
#                    ret = sc.get_geoms(value,attr_filter={'ugid':test_value})
        return (ret)
Esempio n. 8
0
    def test_iter_array(self):
        arrays = [
                  1,
                  [[1,2],[1,2]],
                  np.array([1,2,3]),
                  np.array(1),
                  np.ma.array([1,2,3],mask=False),
                  np.ma.array([[1,2],[3,4]],mask=[[True,False],[False,True]]),
                  np.ma.array([[1,2],[3,4]],mask=True),
                 ]
        _flag1 = [
                  True,
                  False
                  ]
        _flag2 = [
                  True,
                  False
                  ]
        
        for arr,flag1,flag2 in itertools.product(arrays,_flag1,_flag2):
#            try:
            for ret in iter_array(arr,use_mask=flag1,return_value=flag2):
                pass
#            except Exception as e:
#                print(arr,flag1,flag2)
#                import ipdb;ipdb.set_trace()

        arr = np.ma.array([1,2,3],mask=True)
        ret = list(iter_array(arr))
        self.assertEqual(len(ret),0)
        arr = np.ma.array([1,2,3],mask=False)
        ret = list(iter_array(arr))
        self.assertEqual(len(ret),3)
        
        values = np.random.rand(2,2,4,4)
        mask = np.random.random_integers(0,1,values.shape)
        values = np.ma.array(values,mask=mask)
        for idx in iter_array(values):
            self.assertFalse(values.mask[idx])
        self.assertEqual(len(list(iter_array(values,use_mask=True))),len(values.compressed()))
        self.assertEqual(len(list(iter_array(values,use_mask=False))),len(values.data.flatten()))
        
        sd = ShpDataset('state_boundaries')
        ret = list(iter_array(sd.spatial.geom))
        self.assertTrue(len(ret),51)
Esempio n. 9
0
    def test_geom(self):
        geom = make_poly((37.762, 38.222), (-102.281, -101.754))
        g = definition.Geom(geom)
        self.assertEqual(type(g.value), GeometryDataset)

        g = definition.Geom(None)
        self.assertEqual(g.value, None)
        self.assertEqual(str(g), 'geom=None')

        g = definition.Geom('-120|40|-110|50')
        self.assertEqual(str(g), 'geom=-120.0|40.0|-110.0|50.0')

        g = definition.Geom('mi_watersheds')
        self.assertEqual(str(g), 'geom=mi_watersheds')

        geoms = ShpDataset('mi_watersheds')
        g = definition.Geom(geoms)
        self.assertEqual(len(g.value), 60)
Esempio n. 10
0
 def test_write(self):
     sds = ShpDataset('state_boundaries')
     path = os.path.join(env.DIR_OUTPUT,'foo.shp')
     sds.write(path)
Esempio n. 11
0
 def test_write(self):
     sds = ShpDataset('state_boundaries')
     path = os.path.join(env.DIR_OUTPUT, 'foo.shp')
     sds.write(path)
Esempio n. 12
0
 def test_filter(self):
     sds = ShpDataset('state_boundaries', attr_filter={'ugid': [20]})
     self.assertTrue(sds.spatial.geom.shape, (1, ))
Esempio n. 13
0
 def values(self):
     california = ShpDataset('state_boundaries', attr_filter={'ugid': [25]})
     ne_ia_co = ShpDataset('state_boundaries',
                           attr_filter={'ugid': [14, 16, 32]})
     return ([california, ne_ia_co, None])
Esempio n. 14
0
 def california(self):
     ret = ShpDataset('state_boundaries', select_ugid=[25])
     return (ret)
Esempio n. 15
0
 def california(self):
     ret = ShpDataset('state_boundaries',attr_filter={'ugid':[25]})
     return(ret)
Esempio n. 16
0
 def nebraska(self):
     geom = ShpDataset('state_boundaries',select_ugid=[16])
     return(geom)