// gibt zurück ob Karte Selektion hat... public bool AXLaddSelection(FeatureQueryResponse fqr, string selectionColor) { if (!(fqr.layer is AXLFeatureLayer)) { return(false); } if (fqr.selectionMethode == featureQueryMethode.None || fqr.selectionMethode == featureQueryMethode.ID) { return(false); } if (fqr.selectionMethode == featureQueryMethode.Geometry && !fqr.selGeometry.isValid) { return(false); } m_xWriter.WriteStartElement("LAYER"); m_xWriter.WriteAttributeString("type", "featureclass"); m_xWriter.WriteAttributeString("name", "FeatureSelektion"); m_xWriter.WriteAttributeString("visible", "true"); m_xWriter.WriteAttributeString("id", "theSelection"); m_xWriter.WriteStartElement("DATASET"); m_xWriter.WriteAttributeString("fromlayer", fqr.layer.id.ToString()); m_xWriter.WriteEndElement(); // DATASET if (fqr.selectionMethode == featureQueryMethode.Geometry) { m_xWriter.WriteStartElement("SPATIALQUERY"); if (fqr.appendWhereFilter != "") { m_xWriter.WriteAttributeString("where", fqr.appendWhereFilter); } m_xWriter.WriteStartElement("SPATIALFILTER"); m_xWriter.WriteAttributeString("relation", "area_intersection"); fqr.selGeometry.createAXL(ref m_xWriter); m_xWriter.WriteEndElement(); // SPATIALFILTER m_xWriter.WriteEndElement(); // SPATIALQUERY } else if (fqr.selectionMethode == featureQueryMethode.Query) { m_xWriter.WriteStartElement("QUERY"); m_xWriter.WriteAttributeString("where", fqr.selQuery); m_xWriter.WriteEndElement(); // SPATIALQUERY,QUERY } AXLaddHighlightSymbol(((AXLFeatureLayer)fqr.layer).FeatureClass.GeometryType, selectionColor, 0.6); m_xWriter.WriteEndElement(); // LAYER return(true); }
/* * public void AXLaddGeometryOfSelectedFeatures(int maxQueryResults,int beginrecord,string layerID) * { * // REQUEST erzeugen * StringBuilder axl=new StringBuilder(); * StringWriter sw=new StringWriter(axl); * XmlTextWriter xmlWriter=new XmlTextWriter(sw); * * xmlWriter.WriteStartDocument(); * xmlWriter.WriteStartElement("ARCXML"); * xmlWriter.WriteAttributeString("version","1.1"); * xmlWriter.WriteStartElement("REQUEST"); * xmlWriter.WriteStartElement("GET_FEATURES"); * xmlWriter.WriteAttributeString("outputmode","newxml"); * xmlWriter.WriteAttributeString("geometry","true"); * xmlWriter.WriteAttributeString("envelope","true"); * xmlWriter.WriteAttributeString("featurelimit",maxQueryResults.ToString()); * xmlWriter.WriteAttributeString("beginrecord",beginrecord.ToString()); * * xmlWriter.WriteStartElement("LAYER"); * xmlWriter.WriteAttributeString("id",layerID); * xmlWriter.WriteEndElement(); * * AXLaddQuery(); * * xmlWriter.WriteEndDocument(); * * string resp=m_connector.SendRequest(axl,m_server,m_serviceName,"Query"); * * // REQUEST auswerten * XmlTextReader xml=null; * XmlDocument xmldoc=null; * XmlNodeList node=null; * * xml=new XmlTextReader(resp,XmlNodeType.Element,null); * xmldoc=new XmlDocument(); * xmldoc.Load(xml); * node=xmldoc.GetElementsByTagName("FEATURECOUNT"); * * if(node.Count==0) return; * XmlNodeList features=xmldoc.SelectNodes("//FEATURES/FEATURE"); * * foreach(XmlNode feature in features) * { * AXLaddGeometryFromFeature(ref m_xWriter,feature); * } * } */ public void AXLaddBuffer(FeatureQueryResponse fqr, bool target) { m_xWriter.WriteStartElement("BUFFER"); m_xWriter.WriteAttributeString("distance", fqr.bufferDist.ToString()); m_xWriter.WriteAttributeString("bufferunits", "meters"); if (target) { m_xWriter.WriteStartElement("TARGETLAYER"); m_xWriter.WriteAttributeString("id", fqr.bufferID.ToString()); m_xWriter.WriteEndElement(); // TARGETLAYER //m_xWriter.WriteStartElement("SPATIALQUERY"); //m_xWriter.WriteAttributeString("subfields","#ALL#"); //m_xWriter.WriteEndElement(); } m_xWriter.WriteEndElement(); // BUFFER }
public void AXLaddQuery(FeatureQueryResponse fqr, bool insertBuffer, bool insertBufferTarget, bool onlyHighlight) { bool selected = false; if (!onlyHighlight) { selected = fqr.selectFeatures; } if ((selected && insertBuffer == false && fqr.selectionMethode == featureQueryMethode.Geometry) || (!selected && insertBuffer == false && fqr.highlightMethode == featureQueryMethode.Geometry) || (insertBuffer == true && fqr.bufferMethode == featureQueryMethode.Geometry)) { if (fqr.dispBuffer == true && fqr.bufferMethode == featureQueryMethode.ID) { // // Falls "Alle anzeigen" von einem Puffer-Erbebnis aufgerufen wird, soll nicht über den Envelope // selektiert werden. Dabei würden die ursprünglichen, zum Buffer aufgezogenen Features selektiert werden. // --> nur das wirklich gepufferte Feature selektieren... (Atlas3) // m_xWriter.WriteStartElement("QUERY"); if (fqr.appendWhereFilter != "") { m_xWriter.WriteAttributeString("where", /*activeLayerIDField*/ fqr.layer.id + " = " + fqr.bufferID.ToString()); } m_xWriter.WriteEndElement(); // QUERY } else { m_xWriter.WriteStartElement("SPATIALQUERY"); if (insertBuffer) { m_xWriter.WriteAttributeString("subfields", "#ALL#"); AXLaddBuffer(fqr, insertBufferTarget); } if (fqr.appendWhereFilter != "") { m_xWriter.WriteAttributeString("where", fqr.appendWhereFilter); } m_xWriter.WriteStartElement("SPATIALFILTER"); m_xWriter.WriteAttributeString("relation", "area_intersection"); fqr.selGeometry.createAXL(ref m_xWriter); /* * m_xWriter.WriteStartElement("ENVELOPE"); * m_xWriter.WriteAttributeString("minx",m_selenv_minx.ToString()); * m_xWriter.WriteAttributeString("miny",m_selenv_miny.ToString()); * m_xWriter.WriteAttributeString("maxx",m_selenv_maxx.ToString()); * m_xWriter.WriteAttributeString("maxy",m_selenv_maxy.ToString()); * m_xWriter.WriteEndElement(); // ENVELOPE; */ m_xWriter.WriteEndElement(); // SPATIALFILTER m_xWriter.WriteEndElement(); // SPATIALQUERY } } else if (((fqr.highlightMethode == featureQueryMethode.ID && fqr.highlightID != -1) && insertBuffer == false) && (fqr.layer is AXLFeatureLayer)) { /* * m_xWriter.WriteStartElement("SPATIALQUERY"); * m_xWriter.WriteAttributeString("where",activeLayerIDField+" = "+m_highlightID.ToString()); * m_xWriter.WriteAttributeString("featurelimit","1"); * * m_xWriter.WriteStartElement("SPATIALFILTER"); * m_xWriter.WriteAttributeString("relation","area_intersection"); * m_xWriter.WriteStartElement("ENVELOPE"); * m_xWriter.WriteAttributeString("minx",m_selenv_minx.ToString()); * m_xWriter.WriteAttributeString("miny",m_selenv_miny.ToString()); * m_xWriter.WriteAttributeString("maxx",m_selenv_maxx.ToString()); * m_xWriter.WriteAttributeString("maxy",m_selenv_maxy.ToString()); * m_xWriter.WriteEndElement(); // ENVELOPE; * m_xWriter.WriteEndElement(); // SPATIALFILTER */ //m_xWriter.WriteEndElement(); // SPATIALQUERY m_xWriter.WriteStartElement("QUERY"); m_xWriter.WriteAttributeString("where", ((AXLFeatureLayer)fqr.layer).FeatureClass.IDFieldName + " = " + fqr.highlightID.ToString()); m_xWriter.WriteAttributeString("featurelimit", "1"); m_xWriter.WriteEndElement(); // QUERY } else if ((fqr.bufferID != -1 && insertBuffer == true && fqr.bufferMethode == featureQueryMethode.ID) && (fqr.layer is AXLFeatureLayer)) { m_xWriter.WriteStartElement("SPATIALQUERY"); m_xWriter.WriteAttributeString("subfields", "#ALL#"); m_xWriter.WriteAttributeString("where", ((AXLFeatureLayer)fqr.layer).FeatureClass.IDFieldName + " = " + fqr.bufferID.ToString()); AXLaddBuffer(fqr, insertBufferTarget); m_xWriter.WriteEndElement(); // SPATIALQUERY } else if ((selected && fqr.selectionMethode == featureQueryMethode.Query) || (!selected && fqr.highlightMethode == featureQueryMethode.Query)) { if (insertBuffer && fqr.bufferMethode == featureQueryMethode.Query) { m_xWriter.WriteStartElement("SPATIALQUERY"); m_xWriter.WriteAttributeString("subfields", "#ALL#"); m_xWriter.WriteAttributeString("where", fqr.selQuery); AXLaddBuffer(fqr, insertBufferTarget); } else { m_xWriter.WriteStartElement("QUERY"); m_xWriter.WriteAttributeString("where", fqr.selQuery); } m_xWriter.WriteEndElement(); // SPATIALQUERY,QUERY } }
public void AXLaddQuery(FeatureQueryResponse fqr, bool insertBuffer, bool insertBufferTarget) { AXLaddQuery(fqr, insertBuffer, insertBufferTarget, false); }
public void AXLaddQuery(FeatureQueryResponse fqr, bool onlyHighlight) { AXLaddQuery(fqr, false, false, onlyHighlight); }
public void AXLaddQuery(FeatureQueryResponse fqr) { AXLaddQuery(fqr, false, false); }