如何从MySQL表中读取多边形数据

如何从MySQL表中读取多边形数据,mysql,gps,polygon,Mysql,Gps,Polygon,我正在开发一个应用程序,需要将位置数据存储在MySQL表中。除了点位置,我还需要区域(多边形) 我目前正在编写多边形坐标,如下所示: oMySQLConnecion = new MySqlConnection(DatabaseConnectionString); if (oMySQLConnecion.State == System.Data.ConnectionState.Closed || oMySQLConnecion.State == System.Data.C

我正在开发一个应用程序,需要将位置数据存储在MySQL表中。除了点位置,我还需要区域(多边形)

我目前正在编写多边形坐标,如下所示:

 oMySQLConnecion = new MySqlConnection(DatabaseConnectionString);
            if (oMySQLConnecion.State == System.Data.ConnectionState.Closed || oMySQLConnecion.State == System.Data.ConnectionState.Broken)
            {
                oMySQLConnecion.Open();

            }
            if (oMySQLConnecion.State == System.Data.ConnectionState.Open)
            {                    
                string Query = @"INSERT INTO region (REGION_POLYGON) VALUES (PolygonFromText(@Parameter1))";

                MySqlCommand oCommand = new MySqlCommand(Query, oMySQLConnecion);
                oCommand.Parameters.AddWithValue("@Parameter1", PolygonString);

                int sqlSuccess = oCommand.ExecuteNonQuery();
                oMySQLConnecion.Close();

                oDBStatus.Type = DBDataStatusType.SUCCESS;
                oDBStatus.Message = DBMessageType.SUCCESSFULLY_DATA_UPDATED;
                return oDBStatus;
            }
执行之后,我在MySQL表中看到Blob

现在,我想将数据读回以进行测试,但它无法按照我在下面尝试的方式工作:

 if (oMySQLConnecion.State == System.Data.ConnectionState.Open)
            {
                string Query = @"SELECT REGION_ID,REGION_NICK_NAME,GeomFromText(REGION_POLYGON) AS POLYGON FROM region WHERE REGION_USER_ID = @Parameter1";

                MySqlCommand oCommand = new MySqlCommand(Query, oMySQLConnecion);
                oCommand.Parameters.AddWithValue("@Parameter1", UserID);

                using (var reader = oCommand.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        R_PolygonCordinates oRec = new R_PolygonCordinates();
                        oRec.RegionNumber = Convert.ToInt32(reader["REGION_ID"]);
                        oRec.RegionNickName = reader["REGION_NICK_NAME"].ToString();
                        oRec.PolygonCodinates = reader["POLYGON"].ToString();
                        polygons.Add(oRec);
                    }
                }
                int sqlSuccess = oCommand.ExecuteNonQuery();
                oMySQLConnecion.Close();
                return polygons;
            }
它返回一个空字符串

  • 我不确定我是否真的在写数据,因为我无法读取Blob
  • 我的阅读语法不正确吗
  • **注:*我正在使用Visual Studio 2017。MySQL的最新版本,带有空间类

    非常感谢您的帮助

    谢谢

    GeomFromText()
    将WKT(标准化的“众所周知的文本”格式)值作为输入,并返回MySQL内部几何体类型作为输出

    这与您需要的相反,即
    ST_AsWKT()
    ST_AsText()
    ——将内部格式几何体对象作为输入,并返回WKT作为输出

    在5.6之前,该函数称为
    AsWKT()
    AsText()
    。在5.7中,这些都是完全相同函数的同义词,但非
    ST.*
    函数已被弃用,将来将被删除


    我不知道
    ST\uwkt
    前缀的确切含义,但我假设它是“空间类型”。其中有一些讨论可能会引起兴趣。

    我认为你不想
    选择GeomFromText()
    ——我想你想要的是相反的,
    AsWKT()
    ST\u AsWKT()
    。。。它正在工作(使用AsWKT())。。。!AsWKT()和ST_AsWKT()有什么区别?