github.com/RevenueMonster/sqlike@v1.0.6/spatial/spatial.go (about)

     1  package spatial
     2  
     3  // Type :
     4  type Type int
     5  
     6  // Spatial Type :
     7  const (
     8  	Point Type = iota + 1
     9  	LineString
    10  	Polygon
    11  	MultiPoint
    12  	MultiLineString
    13  	MultiPolygon
    14  )
    15  
    16  type function int
    17  
    18  // String :
    19  func (f function) String() string {
    20  	switch f {
    21  	case SpatialTypeGeomFromText:
    22  		return "ST_GeomFromText"
    23  	case SpatialTypeDistance:
    24  		return "ST_Distance"
    25  	case SpatialTypeWithin:
    26  		return "ST_Within"
    27  	case SpatialTypeEquals:
    28  		return "ST_Equals"
    29  	case SpatialTypePointFromText:
    30  		return "ST_PointFromText"
    31  	case SpatialTypeLineString:
    32  		return "ST_LineString"
    33  	case SpatialTypeAsText:
    34  		return "ST_AsText"
    35  	case SpatialTypeAsWKB:
    36  		return "ST_AsWKB"
    37  	case SpatialTypeAsWKT:
    38  		return "ST_AsWKT"
    39  	case SpatialTypeSRID:
    40  		return "ST_SRID"
    41  	case SpatialTypeIsValid:
    42  		return "ST_IsValid"
    43  	case SpatialTypeIntersects:
    44  		return "ST_Intersects"
    45  	case SpatialTypeTransform:
    46  		return "ST_Transform"
    47  	case SpatialTypeX:
    48  		return "ST_X"
    49  	case SpatialTypeY:
    50  		return "ST_Y"
    51  	case SpatialTypeAsGeoJSON:
    52  		return "ST_AsGeoJSON"
    53  	case SpatialTypeArea:
    54  		return "ST_Area"
    55  	}
    56  	return "UNKNOWN FUNCTION"
    57  }
    58  
    59  // functions :
    60  const (
    61  	SpatialTypeGeomFromText function = iota + 1
    62  	SpatialTypeDistance
    63  	SpatialTypeWithin
    64  	SpatialTypeEquals
    65  	SpatialTypePointFromText
    66  	SpatialTypePointFromWKB
    67  	SpatialTypeLineString
    68  	SpatialTypePoint
    69  	SpatialTypePolygon
    70  	SpatialTypeArea
    71  	SpatialTypeAsText
    72  	SpatialTypeAsWKB
    73  	SpatialTypeAsWKT
    74  	SpatialTypeAsGeoJSON
    75  	SpatialTypeSRID
    76  	SpatialTypeX
    77  	SpatialTypeY
    78  	SpatialTypeIsValid
    79  	SpatialTypeIntersects
    80  	SpatialTypeTransform
    81  )
    82  
    83  // Func :
    84  type Func struct {
    85  	Type function
    86  	Args []interface{}
    87  }
    88  
    89  // Geometry :
    90  type Geometry struct {
    91  	Type Type
    92  	SRID uint
    93  	WKT  string
    94  }
    95  
    96  // Value :
    97  func (g Geometry) Value() (interface{}, error) {
    98  	return g.WKT, nil
    99  }