def info(dspath): # get datastore shp = "file://%s" % os.path.abspath(dspath) params = HashMap() params.put('url', net.URL(shp)) dataStore = DataStoreFinder.getDataStore(params) typeName = dataStore.getTypeNames()[0] featureSource = dataStore.getFeatureSource(typeName) featureCollection = featureSource.getFeatures() featureType = featureSource.getSchema() # Print out feature source info (ie layer info) #'getBounds', 'getClass', 'getCount', 'getDataStore' print "Datastore : ", featureSource.getDataStore() print "Layer Name : ", typeName print "Number of features: ", featureCollection.count print "Bounding Box : ", featureSource.getBounds() # Print out feature attribute types for atype in featureType.getAttributeTypes(): print atype.getName(), atype.getType() return None f_iter = featureCollection.iterator() while f_iter.hasNext(): feat = f_iter.next() print "==============", feat.getID() for i in range(feat.getNumberOfAttributes()): print "\t %s " % feat.getAttribute(i) featureCollection.close(f_iter)
def info(dspath): # get datastore shp = "file://%s" % os.path.abspath(dspath) params = HashMap() params.put("url", net.URL(shp)) dataStore = DataStoreFinder.getDataStore(params) typeName = dataStore.getTypeNames()[0] featureSource = dataStore.getFeatureSource(typeName) featureCollection = featureSource.getFeatures() featureType = featureSource.getSchema() # Print out feature source info (ie layer info) #'getBounds', 'getClass', 'getCount', 'getDataStore' print "Datastore : ", featureSource.getDataStore() print "Layer Name : ", typeName print "Number of features: ", featureCollection.count print "Bounding Box : ", featureSource.getBounds() # Print out feature attribute types for atype in featureType.getAttributeTypes(): print atype.getName(), atype.getType() return None f_iter = featureCollection.iterator() while f_iter.hasNext(): feat = f_iter.next() print "==============", feat.getID() for i in range(feat.getNumberOfAttributes()): print "\t %s " % feat.getAttribute(i) featureCollection.close(f_iter)
def __init__(self, shapefile=""): self.ds = DataStoreFinder.getDataStore({ 'url': 'file://%s' % shapefile}) self.fs = self.ds.getFeatureSource(self.ds.getTypeNames()[0]) self.fc = self.fs.getFeatures() self.size = self.fc.size() self.feature_iterator = self.fc.features() self.schema = self.fs.getSchema() self.geom_attr = self.schema.getGeometryDescriptor() self.setUpfields() self.setUpCrs() self.setUpShapeType()
def __init__(self, shapefile=""): self.ds = DataStoreFinder.getDataStore( {'url': 'file://%s' % shapefile}) self.fs = self.ds.getFeatureSource(self.ds.getTypeNames()[0]) self.fc = self.fs.getFeatures() self.size = self.fc.size() self.feature_iterator = self.fc.features() self.schema = self.fs.getSchema() self.geom_attr = self.schema.getGeometryDescriptor() self.setUpfields() self.setUpCrs() self.setUpShapeType()
from org.geotools.data import DataStoreFinder from java.lang import String, Integer, Double if __name__ == '__main__': shapefile = '/home/adorsk/Desktop/habs_4326.shp' ds = DataStoreFinder.getDataStore({'url': 'file://%s' % shapefile}) tnames = ds.getTypeNames() fs = ds.getFeatureSource(tnames[0]) def get_records(): iterator = fs.getFeatures().features() while (iterator.hasNext()): feature = iterator.next() yield feature s = fs.getSchema() gd = s.getGeometryDescriptor() gd_type = gd.getType() print "tname: ", gd_type.name attrs = s.getAttributeDescriptors() for a in attrs: if a is gd: print "gd!" else: name = a.getLocalName() type_ = a.getType().binding if type_ is String: print "str" elif type_ is Integer: print "int"
from org.geotools.data import DataStoreFinder from java.lang import String, Integer, Double if __name__ == '__main__': shapefile = '/home/adorsk/Desktop/habs_4326.shp' ds = DataStoreFinder.getDataStore({'url': 'file://%s' % shapefile}) tnames = ds.getTypeNames() fs = ds.getFeatureSource(tnames[0]) def get_records(): iterator = fs.getFeatures().features() while (iterator.hasNext()): feature = iterator.next() yield feature s = fs.getSchema() gd = s.getGeometryDescriptor() gd_type = gd.getType() print "tname: ", gd_type.name attrs = s.getAttributeDescriptors() for a in attrs: if a is gd: print "gd!" else: name = a.getLocalName() type_ = a.getType().binding if type_ is String: print "str" elif type_ is Integer:
def renderMap(self, connection_parameters=None, sql=None, geom_id_entity=None, geom_entity=None, data_entity=None, map_parameters={}): # Put connection parameters into a java HashMap. params_hashmap = HashMap() for param, value in connection_parameters.items(): if value: params_hashmap.put(param, value) # Get data store. data_store = DataStoreFinder.getDataStore(params_hashmap) # Create VirtualTable from sql. vtable = VirtualTable("vtable", sql) # Set primary key. vtable.setPrimaryKeyColumns([geom_id_entity['ID']]) # metadatata = intententional typo. GT needs to fix the name. vtable.addGeometryMetadatata(geom_entity['ID'], JPolygon, 4326) # Create feature source from virtual table. data_store.addVirtualTable(vtable) feature_source = data_store.getFeatureSource("vtable") # Add styling classes if there was a value entity. if data_entity: # Generate class bounds. num_classes = data_entity.get('num_classes', 25) vmin = float(data_entity.get('min', 0)) vmax = float(data_entity.get('max', 1)) vrange = vmax - vmin class_width = vrange/num_classes classes = [(None, vmin)] for i in range(num_classes): classes.append((vmin + i * class_width, vmin + (i + 1) * class_width)) classes.append((vmax, None)) # Generate style rules for classes. rules = [] for c in classes: rule = self.create_rule(c[0], c[1], vmin, vrange, attr=data_entity['ID']) rules.append(rule) feature_type_style = self.style_factory.createFeatureTypeStyle(rules) style = self.style_factory.createStyle() style.featureTypeStyles().add(feature_type_style) else: style = None # Setup map. gt_map = DefaultMapContext() gt_map.addLayer(feature_source, style) gt_renderer = StreamingRenderer() gt_renderer.setMapContent(gt_map) image_bounds = Rectangle(0, 0, map_parameters.get('WIDTH', 100), map_parameters.get('HEIGHT', 100)) # Set image type based on format. image_format = map_parameters.get('FORMAT', 'image/png') if image_format == 'image/jpeg': image_type = BufferedImage.TYPE_INT_RGB else: image_type = BufferedImage.TYPE_INT_ARGB buffered_image = BufferedImage(image_bounds.width, image_bounds.height, image_type) graphics = buffered_image.createGraphics() # Set background color if not transparent. if not map_parameters.get('TRANSPARENT'): graphics.setPaint(Color.WHITE) graphics.fill(image_bounds) crs = CRS.decode(map_parameters.get('SRS', "EPSG:4326")) bbox = map_parameters.get('BBOX', '-180,-90,180,90') coords = [float(coord) for coord in bbox.split(",")] map_bounds = ReferencedEnvelope(coords[0], coords[2], coords[1], coords[3], crs) gt_renderer.paint(graphics, image_bounds, map_bounds) # Release the JDBC connection and map content. data_store.dispose() gt_renderer.getMapContent().dispose() # Return raw image. byte_array_output_stream = ByteArrayOutputStream() informal_format = re.match('image/(.*)', image_format).group(1) ImageIO.write(buffered_image, informal_format, byte_array_output_stream) byte_array = byte_array_output_stream.toByteArray() raw_image = Py.newString(StringUtil.fromBytes(byte_array)) return raw_image