string strFolder = “D://zt”;
string strName = “MyShape”;
string strShapeFieldName = “Shape”;
IFeatureWorkspace pFWS;
IWorkspaceFactory pWorkSpaceF;
pWorkSpaceF = new ShapefileWorkspaceFactoryClass();
pFWS = pWorkSpaceF.OpenFromFile(strFolder, 0) as IFeatureWorkspace;
IFields pFields;
IFieldsEdit pFieldsEdit;
pFields = new FieldsClass();
pFieldsEdit = pFields as IFieldsEdit;
IField pField;
IFieldEdit pFieldEdit;
pField = new FieldClass();
pFieldEdit = pField as IFieldEdit;
pFieldEdit.Name_2 = strShapeFieldName;
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;
IGeometryDef pGeomDef;
IGeometryDefEdit pGeomDefEdit;
pGeomDef = new GeometryDefClass();
pGeomDefEdit = pGeomDef as IGeometryDefEdit;
pGeomDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolygon;
pGeomDefEdit.SpatialReference_2 = new UnknownCoordinateSystemClass();
pFieldEdit.GeometryDef_2 = pGeomDef;
pFieldsEdit.AddField(pField);
IFeatureClass pFeatureClass;
pFeatureClass = pFWS.CreateFeatureClass(strName, pFields, null, null, esriFeatureType.esriFTSimple, strShapeFieldName, “”);
==========================================================================
public void ShpPointSave3(string LC, string LE, object id1, object id2, object id3, object idEle)
{
//
object newVert = null;
object newField = null;
string gpxPath = “”;
string shpPath = “”;
string pointId = “”;
string pointName = “”;
string pointEle = “”;
string pointCode = “”;
string s = “”;
double pointLon = 0;
double pointLat = 0;
int pos = 0;
gpxPath = txtGpxPath.Text.ToString().Trim() + “//” + LC + “.gpx”;
shpPath = txtShpPath.Text.ToString().Trim() + “//” + LC + “.shp”;
//if()
axShapeFiles1.OpenShape(shpPath, ArcViewShapeFileOCX_crp.eNew.shpCreate, ArcViewShapeFileOCX_crp.eShapeType.shpPoint);
newField = axShapeFiles1.ShapeFields.CreateField(id1.ToString(), ArcViewShapeFileOCX_crp.eFieldType.shpText, 30, 0);
newField = axShapeFiles1.ShapeFields.CreateField(id2.ToString(), ArcViewShapeFileOCX_crp.eFieldType.shpText, 50, 0);
newField = axShapeFiles1.ShapeFields.CreateField(id3.ToString(), ArcViewShapeFileOCX_crp.eFieldType.shpText, 30, 0);
newField = axShapeFiles1.ShapeFields.CreateField(idEle.ToString(), ArcViewShapeFileOCX_crp.eFieldType.shpText, 30, 0);
axShapeFiles1.AppendFieldDefs();
DataSet ds = new DataSet();
DataTable dt = new DataTable();
ds.ReadXml(gpxPath);
dt = ds.Tables[“wpt”];
if (dt == null)
{
ds.Dispose();
return;
}
for (int i = 0; i < dt.Rows.Count; i++)
{
s = dt.Rows[i][“name”].ToString().Trim();
pos = s.IndexOf(” “);
pointCode = s.Substring(0, pos);
s = s.Replace(pointCode, “”).Trim();
pos = s.IndexOf(” “);
pointName = s.Substring(0, pos);
pointId = s.Substring(pos);
pointEle = dt.Rows[i][“ele”].ToString().Trim();
//
object o_pointId = (object)pointId;
object o_pointName = (object)pointName;
object o_pointEle = (object)pointEle;
object o_pointCode = (object)pointCode;
axShapeFiles1.ShapeFields.get_Item(ref(id1)).set_Value(ref(o_pointId));
axShapeFiles1.ShapeFields.get_Item(ref(id2)).set_Value(ref(o_pointName));
axShapeFiles1.ShapeFields.get_Item(ref(id3)).set_Value(ref(o_pointCode));
axShapeFiles1.ShapeFields.get_Item(ref(idEle)).set_Value(ref(o_pointEle));
pointLat = Convert.ToDouble(dt.Rows[i][“lat”]);
pointLon = Convert.ToDouble(dt.Rows[i][“lon”]);
newVert = axShapeFiles1.Vertices.AddVertice(pointLon, pointLat, 0, null, null, 0, null);
axShapeFiles1.CreateShape();
}
}
public void ShpLineSave2(string LC, string LE)
{
//
object newField = null;
object newVert = null;
object Code = “Code”;
object Name = “Name”;
string gpxPath = “”;
string shpPath = “”;
string lineId = “”;
string lineName = “”;
//string s = “”;
string lineLon = “”;
string lineLat = “”;
int pos = 0;
gpxPath = txtGpxPath.Text.ToString().Trim() + “//” + LC + “.gpx”;
shpPath = txtShpPath.Text.ToString().Trim() + “//” + LC + “.shp”;
//if()
axShapeFiles1.OpenShape(shpPath, ArcViewShapeFileOCX_crp.eNew.shpCreate, ArcViewShapeFileOCX_crp.eShapeType.shpPolyLine);
newField = axShapeFiles1.ShapeFields.CreateField(Code.ToString(), ArcViewShapeFileOCX_crp.eFieldType.shpText, 20, 0);
newField = axShapeFiles1.ShapeFields.CreateField(Name.ToString(), ArcViewShapeFileOCX_crp.eFieldType.shpText, 50, 0);
axShapeFiles1.AppendFieldDefs();
DataSet ds = new DataSet();
DataTable dt = new DataTable();
ds.ReadXml(gpxPath);
dt = ds.Tables[“trk”];
if (dt == null)
{
ds.Dispose();
return;
}
/*for (int i = 0; i < dt.Rows.Count; i++)
{
s = dt.Rows[i][“name”].ToString().Trim();
pos = s.IndexOf(” “);
lineId = s.Substring(0, pos);
lineName = s.Substring(pos);
DataRelation dr = ds.Tables[“trk”].ChildRelations[0];
for (int j = 0; j < ds.Tables[“trk”].Rows.Count; j++ )
{
//lineLat=Convert.ToDouble()
//newVert=axShapeFiles1.Vertices.AddVertice()
}
//foreach(DataRow row in dt.Rows[i][“trkseg”])
}*/
DataRelation dralTrk = ds.Tables[“trk”].ChildRelations[0];
string trkname = “”;
string trkcode = “”;
string trkpname = “”;
double trklon = 0;
double trklat = 0;
double trkele = 0;
//short n = 0;
//trk
foreach (DataRow drTrk in ds.Tables[“trk”].Rows)
{
//DataTable dtTrk = new DataTable();
trkname = drTrk[“name”].ToString();
string[] s = trkname.Split(‘ ‘);
trkcode = s[0];
trkpname = s[1];
object o_trkcode = (object)trkcode;
object o_trkpname = (object)trkpname;
axShapeFiles1.ShapeFields.get_Item(ref(Code)).set_Value(ref(o_trkcode));
axShapeFiles1.ShapeFields.get_Item(ref(Name)).set_Value(ref(o_trkpname));
//trkreg
foreach (DataRow drTrkreg in drTrk.GetChildRows(dralTrk))
{
DataRelation dralTrkreg = ds.Tables[drTrkreg.Table.TableName].ChildRelations[0];
/*object o_trkcode = null;
object o_trkpname = null;
axShapeFiles1.ShapeFields.get_Item(ref(Code)).set_Value(ref())*/
//point
int n = 1;
foreach (DataRow drLine in drTrkreg.GetChildRows(dralTrkreg))
{
trklat = Convert.ToDouble(drLine[“lat”].ToString());
trklon = Convert.ToDouble(drLine[“lon”].ToString());
trkele = Convert.ToDouble(drLine[“ele”].ToString());
short m = (short)n;
newVert = axShapeFiles1.Vertices.AddVertice(trklon, trklat, m, null, trkele, 0, null);
n = (int)m;
n = n + 1;
}
axShapeFiles1.CreateShape();
}
}
}