我正在开发一个本地化网站,asp.net . 它的原则正在工作,该网站从数据库制作.kml文件并将其显示在地图上。
我的问题是我在数据库中的坐标具有比双精度更高的精度(15 个字符( 示例:34.25912472611852,-6.588685512542725 所以我使用了十进制类型,但我正在努力解决仅接受双精度值向量的坐标集合
这是我的代码帮助。谢谢
public kml_createur()
{
var document = new Document();
document.Id = "null";
document.Name = "null";
LineString linestring = new LineString();
CoordinateCollection coordinates = new CoordinateCollection();
SqlConnection sqlcon = new SqlConnection("Data Source=DESKTOP-2FB04SU\SQLEXPRESS; Initial Catalog = sys_geo_domaine_etat_db; Integrated Security=True");
String com = "select X, Y from Coordonner where idTerrain = 1";
SqlCommand sqlcom = new SqlCommand(com, sqlcon);
//sqlcom.CommandType = CommandType.StoredProcedure;
//sqlcom.Parameters.Add("@IMEI", SqlDbType.VarChar).Value = TextBox1.Text;
DataTable dt = new DataTable();
SqlDataAdapter sda = new SqlDataAdapter(sqlcom);
sda.Fill(dt);
try
{
sqlcon.Open();
sqlcom.ExecuteNonQuery();
foreach (DataRow dr in dt.Rows)
{
decimal lon = decimal.Parse(dr["x"].ToString());
decimal lat = decimal.Parse(dr["y"].ToString());
这是错误-------------------- 向量 v = 新向量(lon,lat(; --------------------------
坐标。添加(v(;
}
Polygon p = new Polygon();
LinearRing lr = new LinearRing();
OuterBoundary o = new OuterBoundary();
p.OuterBoundary = o;
p.OuterBoundary.LinearRing=lr;
p.OuterBoundary.LinearRing.Coordinates = coordinates;
Placemark placemark = new Placemark();
placemark.Name = "terrain";
placemark.Geometry = p;
document.AddFeature(placemark);
var kml = new Kml();
kml.Feature = document;
kml.Feature = placemark;
KmlFile kmlFile = KmlFile.Create(kml, true);
using (var stream = System.IO.File.OpenWrite("D:\marouane\file.KML"))
{
kmlFile.Save(stream);
System.Diagnostics.Debug.Write("file created");
}
}
catch (Exception exc)
{
System.Diagnostics.Debug.Write(exc.Message);
}
finally
{
sqlcon.Close();
}
}
首先,你应该使用SqlDataReader而不是数据表,我认为你的代码永远不会提取数据。
using (SqlDataReader reader = sqlcom.ExecuteReader())
{
while (reader.read())
{
decimal lon = decimal.Parse(reader("x"));
decimal lat = decimal.Parse(reader("y"));
}
}
之后,我更完整地描述您的错误消息可能会有所帮助。