Exemplo n.º 1
0
    def get_border_by_gmt( self, land_filter=None, ocean_filter=None, \
                            vert_f='temp.lli', oceanf='oceanf.lli', \
                            landf='landf.lli' ):
        '''Returns list of border polygon indexes. Uses GMT for searching
        the polygons, those have both wet and dry vertices.
        '''

        tc = []
        for i in range( len ( self.coords ) ):
            p = self.coords[i]
            [ tc.append( [ v[0], v[1], i ] ) for v in p ]

        geofiles.w_lonlati( vert_f, tc )

        if ocean_filter == None:
            ocean_filter = self.default_ocean
        subprocess.call( ocean_filter, shell=True )  # most time spent here

        if land_filter == None:
            land_filter = self.default_land
        subprocess.call( land_filter, shell=True )  # most time spent here

        tc = geofiles.r_lonlati( landf )
        I = { p[2]:p[2] for p in tc }
        
        tc = geofiles.r_lonlati( landf )
        II = { p[2]:p[2] for p in tc }

        S = [ i for i in I if i in II ]

        os.remove( vert_f )
        os.remove( oceanf )
        os.remove( landf )
        
        return S
Exemplo n.º 2
0
    def clear_the_land( self, ocean_filter=None, \
                        vert_f='temp.lli', filt_vert_f='oceanf.lli' ):
        '''Clears all polygons, that have no vertices located on water'''

        tc = []
        for i in range( len ( self.coords ) ):
            p = self.coords[i]
            [ tc.append( [ v[0], v[1], i ] ) for v in p ]

        geofiles.w_lonlati( vert_f, tc )

        if ocean_filter == None:
            ocean_filter = self.default_ocean
        subprocess.call( ocean_filter, shell=True )  # most time spent here

        tc = geofiles.r_lonlati( filt_vert_f )

        I = { p[2]:p[2] for p in tc }

        self.coords = [ self.coords[i] for i in I ]

        os.remove( vert_f )
        os.remove( filt_vert_f )
        return