Exemple #1
0
        public static MG_Geometry AsGeometry(Geometry g)
        {
            MG_Geometry geometry = new MG_Geometry();

            if (g.GetGeometryType() == wkbGeometryType.wkbPoint)
            {
                geometry = AsPoint(g);
            }
            else if (g.GetGeometryType() == wkbGeometryType.wkbMultiPoint)
            {
                geometry = AsMultiPoint(g);
            }
            else if (g.GetGeometryType() == wkbGeometryType.wkbLineString)
            {
                geometry = AsLineString(g);
            }
            else if (g.GetGeometryType() == wkbGeometryType.wkbMultiLineString)
            {
                geometry = AsMultiLineString(g);
            }
            else if (g.GetGeometryType() == wkbGeometryType.wkbPolygon)
            {
                geometry = AsPolygon(g);
            }
            else if (g.GetGeometryType() == wkbGeometryType.wkbMultiPolygon)
            {
                geometry = AsMultiPolygon(g);
            }
            return(geometry);
        }
Exemple #2
0
        public static MG_Feature AsFeature(Feature f)
        {
            FeatureDefn def       = f.GetDefnRef();
            MG_FieldSet fieldSet  = AsFieldSet(def);
            MG_Feature  mgFeature = new MG_Feature(fieldSet);//collect data

            // geometry
            Geometry    g        = f.GetGeometryRef();
            MG_Geometry geometry = AsGeometry(g);
            string      wkt      = geometry.AsWKT(); // Test

            mgFeature.SetGeometry(geometry);         //collect data

            // symbol
            string styleString = f.GetStyleString();
            //f.SetStyleString(styleString);

            // attribute value
            MG_ValueSet valueSet    = new MG_ValueSet();
            int         fid         = f.GetFID();
            int         nFieldCount = f.GetFieldCount();

            for (int iField = 0; iField < nFieldCount; iField++)
            {
                FieldDefn fdef      = def.GetFieldDefn(iField);
                FieldType fieldType = fdef.GetFieldType();//OFTInteger OFTString OFTString

                MG_Value mgValue = new MG_Value();
                mgValue.Index = iField;// collect data
                //collect data
                if (fieldType == FieldType.OFTString)
                {
                    mgValue.Value = f.GetFieldAsString(iField);
                }
                else if (fieldType == FieldType.OFTInteger)
                {
                    mgValue.Value = f.GetFieldAsInteger(iField);
                }
                else if (fieldType == FieldType.OFTReal)
                {
                    mgValue.Value = f.GetFieldAsDouble(iField);
                }
                else if (fieldType == FieldType.OFTDateTime)
                {
                    int year, month, day, hour, minute, second, flag;
                    f.GetFieldAsDateTime(iField, out year, out month, out day, out hour, out minute, out second, out flag);
                    mgValue.Value = new DateTime(year, month, day, hour, minute, second, flag);
                }
                valueSet.Add(mgValue);
            }
            mgFeature.ValueSet = valueSet;//collect data

            return(mgFeature);
        }
Exemple #3
0
        private string sql_Insert(string table, MG_ValueSet valueSet, MG_Geometry geometry)
        {// oid, field1, field2, field3, field4,...fieldN, geom
            //  INSERT INTO point(f1, f2, f3, geom) VALUES('v1', 'v2', 'v3', ST_GeometryFromText('POINT (100 200)',0));
            string str1 = "INSERT INTO {0}(";

            str1 = String.Format(str1, table);

            // oid name geom cityno length
            // name cityno length
            ArrayList columns = this.GetColumnNames(table);
            string    str2    = "";
            string    str4    = "";

            if (columns != null && valueSet != null)
            {
                string temp1      = "{0}, ";
                string temp2      = "'{0}', ";
                int    countField = columns.Count;    //5
                int    countValue = valueSet.Count(); // 3
                if (countField - 2 == countValue)     // oid geom
                {
                    for (int i = 0; i < countField; i++)
                    {
                        string column = columns[i].ToString();
                        if (!column.Equals("oid") && !column.Equals("geom"))
                        {
                            str2 += String.Format(temp1, column);
                        }
                    }
                    for (int j = 0; j < countValue; j++)
                    {
                        str4 += String.Format(temp2, valueSet.GetAt(j).Value);
                    }
                }
            }
            string str3 = "geom) VALUES(";
            string str5 = "ST_GeometryFromText('{0}',0));";

            str5 = String.Format(str5, geometry.AsWKT());

            string strSQL = str1 + str2 + str3 + str4 + str5;

            return(strSQL);
        }
Exemple #4
0
        public int Insert(string table, MG_ValueSet valueSet, MG_Geometry geometry)
        {
            string strSQL = this.sql_Insert(table, valueSet, geometry);

            return(this.Run(strSQL));
        }
 public int Insert(string table, MG_ValueSet valueSet, MG_Geometry geometry)
 {
     this.sql_Insert(table, valueSet, geometry, out m_strSQL, out m_sqlParams);
     return(this.RunSQL(m_strConn, m_strSQL, m_sqlParams));
 }
Exemple #6
0
        public static void RenderGeometry(Graphics g, Pen pen, Brush brush, MG_MapView mapview, MG_Geometry geometry)
        {
            switch (geometry.Type)
            {
            case MG_GeometryType.NONE:
                break;

            case MG_GeometryType.POINT:
                MG_MapRender.RenderPoint(g, brush, MG_Constant.PointRadius, mapview, geometry as MG_Point);
                break;

            case MG_GeometryType.MULTIPOINT:
                MG_MapRender.RenderMultiPoint(g, brush, MG_Constant.PointRadius, mapview, geometry as MG_MultiPoint);
                break;

            case MG_GeometryType.LINESTRING:
                MG_MapRender.RenderLineString(g, pen, mapview, geometry as MG_LineString);
                break;

            case MG_GeometryType.MULTILINESTRING:
                MG_MapRender.RenderMultiLineString(g, pen, mapview, geometry as MG_MultiLineString);
                break;

            case MG_GeometryType.POLYGON:
                MG_MapRender.RenderPolygon(g, brush, mapview, geometry as MG_Polygon);
                //MG_MapRender.RenderPolygon(g, pen, mapview, geometry as MG_Polygon);
                break;

            case MG_GeometryType.MULTIPOLYGON:
                MG_MapRender.RenderMultiPolygon(g, brush, mapview, geometry as MG_MultiPolygon);
                //MG_MapRender.RenderMultiPolygon(g, pen, mapview, geometry as MG_MultiPolygon);
                break;
            }
        }