问题坐标精度更高,??.加倍



我正在开发一个本地化网站,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"));
}
}

之后,我更完整地描述您的错误消息可能会有所帮助。

最新更新