private void filter_true() { string path = textBox_folder.Text; comboStart = dataGridView1.Rows[0].Cells[0].Value.ToString(); comboEnd = dataGridView1.Rows[0].Cells[1].Value.ToString(); string save_LM = "UFL_OPIP_LM" + "_" + comboStart + "_" + comboEnd; string save_PS = "UFL_OPIP_PS" + "_" + comboStart + "_" + comboEnd; string temp_LM = "UFL_OPIP_LM"; string temp_PS = "UFL_OPIP_PS"; string psFilePath = path + "\\" + save_PS; string lmFilePath = path + "\\" + save_LM; int dRcnt = dataGridView1.Rows.Count - 1; int dCcnt = dataGridView1.Columns.Count; textBox_status.AppendText("Shape파일을 생성합니다..." + "\r\n" + "\r\n"); Driver driver = Ogr.GetDriverByName("ESRI Shapefile"); DataSource data_source = driver.CreateDataSource(path, new string[] { "ENCODING=UTF-8" }); OSGeo.OSR.SpatialReference srs = new OSGeo.OSR.SpatialReference(""); srs.ImportFromEPSG(5186); // MessageBox.Show( dataGridView1.Rows[1].Cells[5].Value.ToString()); System.IO.FileInfo fi = new System.IO.FileInfo(psFilePath + ".shp"); if (fi.Exists) { MessageBox.Show("파일이 있습니다"); File.Delete(psFilePath + ".prj"); File.Delete(psFilePath + ".shp"); File.Delete(psFilePath + ".dbf"); File.Delete(psFilePath + ".shx"); } else { //Ps var layer = data_source.CreateLayer(temp_PS, srs, wkbGeometryType.wkbPoint, new string[] { "ENCODING=UTF-8" }); textBox_status.AppendText(psFilePath + ".shp 파일 생성" + "\r\n"); //string x_temp = dataGridView1.Rows[0].Cells[2].Value.ToString(); FieldDefn ftr_cde = new FieldDefn("FTR_CDE", FieldType.OFTString); FieldDefn hjd_cde = new FieldDefn("HJD_CDE", FieldType.OFTString); FieldDefn pip_dep = new FieldDefn("PIP_DEP", FieldType.OFTReal); FieldDefn start_point = new FieldDefn("시점", FieldType.OFTString); FieldDefn end_point = new FieldDefn("종점", FieldType.OFTString); FieldDefn field_x = new FieldDefn("X", FieldType.OFTReal); FieldDefn field_y = new FieldDefn("Y", FieldType.OFTReal); FieldDefn field_z = new FieldDefn("Z", FieldType.OFTReal); layer.CreateField(ftr_cde, 1); layer.CreateField(hjd_cde, 1); layer.CreateField(pip_dep, 1); layer.CreateField(start_point, 1); layer.CreateField(end_point, 1); layer.CreateField(field_x, 1); layer.CreateField(field_y, 1); layer.CreateField(field_z, 1); FeatureDefn ftr = layer.GetLayerDefn(); //FeatureDefn ftr = new FeatureDefn(null); ftr.SetGeomType(layer.GetLayerDefn().GetGeomType()); Feature ipFeature = new Feature(ftr); string wktPointZ = ""; Geometry ipGeom = null; for (int i = 0; i < dRcnt; ++i) { wktPointZ = String.Format("POINT Z({0} {1} {2})", dataGridView1.Rows[i].Cells[2].Value.ToString(), dataGridView1.Rows[i].Cells[3].Value.ToString(), dataGridView1.Rows[i].Cells[4].Value.ToString()); ipGeom = Ogr.CreateGeometryFromWkt(ref wktPointZ, srs); ipFeature.SetGeometry(ipGeom); ipFeature.SetField("FTR_CDE", "SF900"); ipFeature.SetField("HJD_CDE", ""); ipFeature.SetField("PIP_DEP", ""); ipFeature.SetField("시점", dataGridView1.Rows[i].Cells[0].Value.ToString()); ipFeature.SetField("종점", dataGridView1.Rows[i].Cells[1].Value.ToString()); ipFeature.SetField("X", dataGridView1.Rows[i].Cells[2].Value.ToString()); ipFeature.SetField("Y", dataGridView1.Rows[i].Cells[3].Value.ToString()); ipFeature.SetField("Z", dataGridView1.Rows[i].Cells[4].Value.ToString()); layer.CreateFeature(ipFeature); progressBar1.PerformStep(); } layer.CommitTransaction(); layer.SyncToDisk(); layer.Dispose(); data_source.Dispose(); System.IO.FileInfo fil = new System.IO.FileInfo(path + "\\" + temp_PS + ".shp"); if (fil.Exists) { System.IO.File.Move(path + "\\" + temp_PS + ".shp", psFilePath + ".shp"); System.IO.File.Move(path + "\\" + temp_PS + ".cpg", psFilePath + ".cpg"); System.IO.File.Move(path + "\\" + temp_PS + ".dbf", psFilePath + ".dbf"); System.IO.File.Move(path + "\\" + temp_PS + ".prj", psFilePath + ".prj"); System.IO.File.Move(path + "\\" + temp_PS + ".shx", psFilePath + ".shx"); } } //LM System.IO.FileInfo fLM = new System.IO.FileInfo(lmFilePath + ".shp"); if (fLM.Exists) { MessageBox.Show(lmFilePath + "이 있습니다"); File.Delete(lmFilePath + ".prj"); File.Delete(lmFilePath + ".shp"); File.Delete(lmFilePath + ".dbf"); File.Delete(lmFilePath + ".shx"); } else { //LM DataSource data_source2 = driver.CreateDataSource(path, new string[] { "ENCODING=UTF-8" }); var layer = data_source2.CreateLayer(temp_LM, srs, wkbGeometryType.wkbLineString, new string[] { "ENCODING=UTF-8" }); textBox_status.AppendText(lmFilePath + ".shp 파일 생성" + "\r\n"); FieldDefn ftr_cde = new FieldDefn("FTR_CDE", FieldType.OFTString); FieldDefn hjd_cde = new FieldDefn("HJD_CDE", FieldType.OFTString); FieldDefn pip_dep = new FieldDefn("PIP_DEP", FieldType.OFTReal); FieldDefn start_point = new FieldDefn("시점", FieldType.OFTString); FieldDefn end_point = new FieldDefn("종점", FieldType.OFTString); FieldDefn field_x = new FieldDefn("X", FieldType.OFTReal); FieldDefn field_y = new FieldDefn("Y", FieldType.OFTReal); FieldDefn field_z = new FieldDefn("Z", FieldType.OFTReal); layer.CreateField(ftr_cde, 1); layer.CreateField(hjd_cde, 1); layer.CreateField(pip_dep, 1); layer.CreateField(start_point, 1); layer.CreateField(end_point, 1); layer.CreateField(field_x, 1); layer.CreateField(field_y, 1); layer.CreateField(field_z, 1); FeatureDefn ftr = layer.GetLayerDefn(); //FeatureDefn ftr = new FeatureDefn(null); ftr.SetGeomType(layer.GetLayerDefn().GetGeomType()); Feature ipFeature = new Feature(ftr); Geometry ipGeom = null; string lineWKT = "LINESTRING ("; for (int i = 0; i < dRcnt; ++i) { string s_x = dataGridView1.Rows[i].Cells[2].Value.ToString(); string s_y = dataGridView1.Rows[i].Cells[3].Value.ToString(); if (i == dRcnt - 1) { lineWKT = lineWKT + s_x + " " + s_y + ")"; progressBar1.PerformStep(); } else { lineWKT = lineWKT + s_x + " " + s_y + ","; progressBar1.PerformStep(); } } ipGeom = Ogr.CreateGeometryFromWkt(ref lineWKT, srs); ipFeature.SetGeometry(ipGeom); ipFeature.SetField("FTR_CDE", "SF900"); ipFeature.SetField("HJD_CDE", ""); ipFeature.SetField("PIP_DEP", ""); ipFeature.SetField("시점", dataGridView1.Rows[0].Cells[0].Value.ToString()); ipFeature.SetField("종점", dataGridView1.Rows[0].Cells[1].Value.ToString()); layer.CreateFeature(ipFeature); layer.CommitTransaction(); layer.SyncToDisk(); layer.Dispose(); data_source2.Dispose(); System.IO.FileInfo film = new System.IO.FileInfo(path + "\\" + temp_LM + ".shp"); if (film.Exists) { System.IO.File.Move(path + "\\" + temp_LM + ".shp", lmFilePath + ".shp"); System.IO.File.Move(path + "\\" + temp_LM + ".cpg", lmFilePath + ".cpg"); System.IO.File.Move(path + "\\" + temp_LM + ".dbf", lmFilePath + ".dbf"); System.IO.File.Move(path + "\\" + temp_LM + ".prj", lmFilePath + ".prj"); System.IO.File.Move(path + "\\" + temp_LM + ".shx", lmFilePath + ".shx"); } textBox_status.AppendText("\r\n" + "Shape파일 생성이 완료되었습니다."); } }