private void paintLayerbyStyle(Graphics g, Graphics text_g, Layer layer, RSTransform rstransform) { Style style = layer.style; FeatureSource featuresource = layer.featuresource; foreach (Feature feature in featuresource.features.featureList) { if (!feature.visible) { continue; } switch (feature.geometry.geometryType) { case OSGeo.OGR.wkbGeometryType.wkbPoint: paintPointFeaturebyRule(g, text_g, feature, SelectRendererRule(feature, style), rstransform); break; case OSGeo.OGR.wkbGeometryType.wkbLineString: paintLineFeaturebyRule(g, text_g, feature, SelectRendererRule(feature, style), rstransform); break; case OSGeo.OGR.wkbGeometryType.wkbMultiLineString: break; case OSGeo.OGR.wkbGeometryType.wkbPolygon: paintpolygonFeaturebyRule(g, text_g, feature, SelectRendererRule(feature, style), rstransform); break; case OSGeo.OGR.wkbGeometryType.wkbMultiPolygon: paintMultiPolygonbyRule(g, text_g, feature, SelectRendererRule(feature, style), rstransform); break; } } }
public GisSmartTools.Geometry.Rectangle GetRefernectRectangle() { if (layerlist.Count == 0) { return(new Geometry.Rectangle(0, 0, 100, 100)); } Geometry.Rectangle rect = new Geometry.Rectangle(Utils.double_max, Utils.double_max, Utils.double_min, Utils.double_min); foreach (Layer layer in layerlist) { if (!layer.visible) { continue; } Geometry.Rectangle layerrect = layer.getEnvelopofLayer(); // if(layer.featuresource.schema.rs.spetialReference.)///////////////?????????????此处判断数据坐标系统与map坐标系统是否一致,如果不一致,需要转换 //layerrect = transform... ReferenceSystem rs = layer.getReference(); RSTransform transform = RSTransformFactory.getRSTransform(rs, this.srs); PointD minxy = transform.sourceToTarget(new PointD(layerrect.minX, layerrect.minY)); PointD maxxy = transform.sourceToTarget(new PointD(layerrect.maxX, layerrect.maxY)); if (minxy.X < rect.minX) { rect.minX = minxy.X; } if (maxxy.X > rect.maxX) { rect.maxX = maxxy.X; } if (minxy.Y < rect.minY) { rect.minY = minxy.Y; } if (maxxy.Y > rect.maxY) { rect.maxY = maxxy.Y; } } return(rect); }
public RSTransform rsTransfrom; //坐标系转换器 public Filter_Envelop(Rectangle rect, RSTransform rstransfrom) { this.rect = rect; this.rsTransfrom = rstransfrom; }
private void paintMutiLinebyRule(Graphics g, Graphics text_g, Feature feature, RenderRule rule, RSTransform rstransform) { }