insert geospatial datatype( mutipolygon) in mysql with java( jdbc)

前端 未结 3 1746
旧时难觅i
旧时难觅i 2020-12-22 10:23

I am using geotools library to extract the location information. With that I am getting an object of type

class com.vividsolutions.jts.geom.MultiPolygon


        
相关标签:
3条回答
  • 2020-12-22 11:07

    MySql can't know how to store your GEO object, or what is his size. You should not store the object the way you're trying.

    The PreparedStatement#setObject() documentation says :

    The JDBC specification specifies a standard mapping from Java Object types to SQL types. The given argument will be converted to the corresponding SQL type before being sent to the database. [...] This method throws an exception if there is an ambiguity, for example, if the object is of a class implementing more than one of the interfaces named above.

    0 讨论(0)
  • 2020-12-22 11:09

    It can be binary as well, e.g.

    PreparedStatement preparedStatement = connection.prepareStatement
    ("INSERT INTO table (point, polygon) VALUES (PointFromWKB(?), GeomFromWKB(?))");
    
    WKBWriter writer = new WKBWriter();
    
    preparedStatement.setBytes(1, writer.write(point));
    preparedStatement.setBytes(2, writer.write(polygon));
    
    preparedStatement.executeUpdate();
    
    0 讨论(0)
  • 2020-12-22 11:15

    Answer

    1. You need to convert the geometry object you have to well known text. You'll find information on how to do that in the vividsolutions API documentation.

      geoobject.toText();
      
    2. Insert / Update the data using the mysql GeomFromText method.

      INSERT INTO geom VALUES (GeomFromText(@g));
      
    0 讨论(0)
提交回复
热议问题