Advertisement
Guest User

Untitled

a guest
Sep 26th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.58 KB | None | 0 0
  1. object PostGisProjectionSupportUtils {
  2. +  private lazy val WITH_SRID = """^SRID=([\d]+);(.*)""".r
  3. +
  4.    def toLiteral(pg: Projected[Geometry]): String = s"SRID=${pg.srid};${WKT.write(pg.geom)}"
  5.  
  6.    def fromLiteral[T <: Projected[_]](value: String): T =
  7. -    splitRSIDAndWKT(value) match {
  8. -      case (srid, wkt) =>
  9. -        val geom =
  10. -          if (wkt.startsWith("00") || wkt.startsWith("01"))
  11. -            WKB.read(wkt)
  12. -          else
  13. -            WKT.read(wkt)
  14. -
  15. -        if (srid != -1)
  16. -          Projected(geom, srid).asInstanceOf[T]
  17. -        else
  18. -          Projected(geom, geom.jtsGeom.getSRID).asInstanceOf[T]
  19. +    value match {
  20. +      case WITH_SRID(srid, wkt) =>
  21. +        val geom = readWktOrWkb(wkt)
  22. +        Projected(geom, srid).asInstanceOf[T]
  23. +      case _ =>
  24. +        val geom = readWktOrWkb(value)
  25. +        Projected(geom, geom.jtsGeom.getSRID).asInstanceOf[T]
  26.      }
  27.  
  28. -  /** copy from [[org.postgis.PGgeometry#splitSRID]] */
  29. -  private def splitRSIDAndWKT(value: String): (Int, String) = {
  30. -    if (value.startsWith("SRID=")) {
  31. -      val index = value.indexOf(';', 5) // srid prefix length is 5
  32. -      if (index == -1) {
  33. -        throw new java.sql.SQLException("Error parsing Geometry - SRID not delimited with ';' ")
  34. -      } else {
  35. -        val srid = Integer.parseInt(value.substring(0, index))
  36. -        val wkt = value.substring(index + 1)
  37. -        (srid, wkt)
  38. -      }
  39. -    } else (-1, value)
  40. +  private def readWktOrWkb(s: String): Geometry =
  41. +    if (s.startsWith("00") || s.startsWith("01"))
  42. +      WKB.read(s)
  43. +    else
  44. +      WKT.read(s)
  45. +}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement