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
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