Пример #1
0
        // 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);
        }
Пример #2
0
 /*
  * 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
 }
Пример #3
0
        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
            }
        }
Пример #4
0
 public void AXLaddQuery(FeatureQueryResponse fqr, bool insertBuffer, bool insertBufferTarget)
 {
     AXLaddQuery(fqr, insertBuffer, insertBufferTarget, false);
 }
Пример #5
0
 public void AXLaddQuery(FeatureQueryResponse fqr, bool onlyHighlight)
 {
     AXLaddQuery(fqr, false, false, onlyHighlight);
 }
Пример #6
0
 public void AXLaddQuery(FeatureQueryResponse fqr)
 {
     AXLaddQuery(fqr, false, false);
 }