func (p *PointS) Scan(value interface{}) error {
	reader, err := decode(value)
	if err != nil {
		return err
	}
	if err = readEWKB(reader, p); err != nil {
		return err
	}
	return nil
}
PointS functions *
package postgis
import (
	"bytes"
	"database/sql/driver"
	"encoding/binary"
)
type Point struct {
	X, Y float64
}
type PointZ struct {
	X, Y, Z float64
}
type PointM struct {
	X, Y, M float64
}
type PointZM struct {
	X, Y, Z, M float64
}
type PointS struct {
	SRID int32
	X, Y float64
}
type PointZS struct {
	SRID    int32
	X, Y, Z float64
}
type PointMS struct {
	SRID    int32
	X, Y, M float64
}
type PointZMS struct {
	SRID       int32
	X, Y, Z, M float64
}
func (p *Point) Scan(value interface{}) error {
	reader, err := decode(value)
	if err != nil {
		return err
	}
	if err = readEWKB(reader, p); err != nil {
		return err
	}
	return nil
}
func (p Point) Value() (driver.Value, error) {
	buffer, err := writeEWKB(&p)
	if err != nil {
		return nil, err
	}
	return buffer.Bytes(), nil
}
func (p Point) Write(buffer *bytes.Buffer) error {
	err := binary.Write(buffer, binary.LittleEndian, &p)
	return err
}
func (p Point) GetType() uint32 {
	return 1
}
func (p *PointZ) Scan(value interface{}) error {
	reader, err := decode(value)
	if err != nil {
		return err
	}
	if err = readEWKB(reader, p); err != nil {
		return err
	}
	return nil
}
func (p PointZ) Value() (driver.Value, error) {
	buffer, err := writeEWKB(&p)
	if err != nil {
		return nil, err
	}
	return buffer.Bytes(), nil
}
func (p PointZ) Write(buffer *bytes.Buffer) error {
	err := binary.Write(buffer, binary.LittleEndian, &p)
	return err
}
func (p PointZ) GetType() uint32 {
	return 0x80000001
}
func (p *PointM) Scan(value interface{}) error {
	reader, err := decode(value)
	if err != nil {
		return err
	}
	if err = readEWKB(reader, p); err != nil {
		return err
	}
	return nil
}
func (p PointM) Value() (driver.Value, error) {
	buffer, err := writeEWKB(&p)
	if err != nil {
		return nil, err
	}
	return buffer.Bytes(), nil
}
func (p PointM) Write(buffer *bytes.Buffer) error {
	err := binary.Write(buffer, binary.LittleEndian, &p)
	return err
}
func (p PointM) GetType() uint32 {
	return 0x40000001
}
func (p *PointZM) Scan(value interface{}) error {
	reader, err := decode(value)
	if err != nil {
		return err
	}
	if err = readEWKB(reader, p); err != nil {
		return err
	}
	return nil
}
func (p PointZM) Value() (driver.Value, error) {
	buffer, err := writeEWKB(&p)
	if err != nil {
		return nil, err
	}
	return buffer.Bytes(), nil
}
func (p PointZM) Write(buffer *bytes.Buffer) error {
	err := binary.Write(buffer, binary.LittleEndian, &p)
	return err
}
func (p PointZM) GetType() uint32 {
	return 0xC0000001
}