from gvsig import * from geom import * def main(*args): """ Buffer and distance to one point with one spatial condition""" ### INITIAL DATA path = "/home/oscm/temp/layer_ex3_01.shp" distanceBuffer = 50 refPoint = (725000, 4370000) ### LAYERS layer = currentLayer() # active layer layerBlocks = currentView().getLayer("manzanas_valencia") ### PROCESS # New layer schema = layer.getSchema() newSchema = createSchema(schema) newSchema.append("DISTANCE", "DOUBLE", size=10) CRS = currentView().getProjection() output = createShape(newSchema, path, CRS=CRS, geometryType=POLYGON) # Buffer features = layer.features() blocks = layerBlocks.features() x = refPoint[0] y = refPoint[1] geomPoint = createPoint(x, y) for feature in features: values = feature.getValues() # Convert geometry to buffer geom = feature.geometry() values["GEOMETRY"] = geom.buffer(distanceBuffer) values["DISTANCE"] = geom.distance(geomPoint) for block in blocks: if block.geometry().intersects(geom): output.append(values) # add values to output layer break #Add layer to currentView. Commit changes currentView().addLayer(output) output.commit()