Ddongyu1009init
cdf6f0e0创建于 2024年9月6日历史提交

API接口说明如下:

有序数对接口:


// 有序数对
public interface OrderedPair {
    // x值
    prop var x : Float64
    // y值
    prop var y : Float64
}

坐标类:

// 坐标
public open class Coordinate <: OrderedPair & ToString
    // 坐标x值
    public prop var x : Float64
    // 坐标y值
    public prop var y : Float64
    // 通过x值和y值创建坐标对象
    public init(x : Float64, y : Float64)
    // 通过数组创建坐标对象
    public static func fromArray(arr : Array<Float64>) : ?Coordinate
    // 输出为字符串
    public func toString() : String

}

经纬度坐标类:

// 经纬度坐标
public class LatLng <: Coordinate {
    // 通过经纬度创建LatLng对象,其中lat为纬度,lng为经度
    public init(lat : Float64, lng : Float64)

}

坐标工具:

// 坐标工具
public class CoordinateEngine {

    // 计算3个坐标组成折线的角度
    public static func angle(p1 : Coordinate, p2 : Coordinate, p3 : Coordinate) : Float64

    // 计算两个坐标组成线段的方向
    public static func bearing(pfrom : Coordinate , pto : Coordinate) : Float64

    // 计算两个坐标的距离
    public static func distance(c1 : Coordinate, c2 : Coordinate) : Float64

    // 计算由坐标组成折线的长度
    public static func length(coors : Array<Coordinate>) : Float64 

    // 计算面积(墨卡托Mercator投影) 传入的坐标需为地理坐标
    public static func area(coors : Array<Coordinate>) : Float64

    // 计算球面面积 传入的坐标需为地理坐标
    public static func SphericalArea(coors : Array<Coordinate>) : Float64

    // 计算平面面积(墨卡托Mercator投影) 传入的坐标需为地理坐标
    public static func PlanarArea(coors : Array<Coordinate> ) : Float64

    // 将GCJ-02坐标转换为WGS 1984坐标(近似)
    public static func GCJ02ToWGS84(coordinate : Coordinate): Coordinate

    // 将BD-09坐标转换为WGS 1984坐标(近似)
    public static func BD09ToWGS84(coordinate : Coordinate): Coordinate

    // 将WGS 1984坐标转换为GCJ-02坐标
    public static func WGS84ToGCJ02(coordinate : Coordinate): Coordinate

    // 将WGS 1984坐标转换为BD-09坐标
    public static func WGS84ToBD09(coordinate : Coordinate): Coordinate

    // 将BD-09坐标转换为GCJ-02坐标(近似)
    public static func BD09ToGCJ02(coordinate : Coordinate): Coordinate

    // 将GCJ-02坐标转换为BD-09坐标
    public static func GCJ02ToBD09(coordinate : Coordinate): Coordinate

    // 将墨卡托Mercator投影坐标转换为地理坐标
    public static func MercatorToGeographic(coor : Coordinate) : Coordinate

    // 将地理坐标投影到墨卡托Mercator投影坐标
    public static func GeographicToMercator(coor : Coordinate) : Coordinate


}

坐标转换接口:

// 坐标转换接口,Geometry的子类均现实了CoordinateTransformer<T>接口
public interface CoordinateTransformer<T> where T <: Geometry{

    // 将几何对象的地理坐标转换为GCJ-02坐标
    mut func toGCJ02() : ?T
    
    // 将几何对象的地理坐标转换为BD-09坐标
    mut func toBD09() : ?T
    
    // 将几何对象的地理坐标转换为WGS 1984坐标
    mut func toWGS1984() : ?T

    // 将地理坐标投影到墨卡托Mercator投影坐标
    mut func projectToMercator() : ?T
    
}

几何图形抽象类:


// 几何图形抽象类
public open abstract class Geometry <: ToJson & ToString {

    // 判断是否拥有空间参考
    public func hasSpatialReference() : Bool

    // 输出为JSON格式
    public open func toJson(): JsonValue

    // 通过JSON格式的几何图形转换为DataModel
    public static func fromJson(jv: JsonValue): DataModel

}

几何对象工具类:

// 几何对象工具类
public class GeometryEngine {

    // 计算Polygon的面积 传入的坐标需为地理坐标
    public static func Area(p : Polygon) : Float64

    // 计算Polygon的球面面积 传入的坐标需为地理坐标
    public static func SphericalArea(p : Polygon) : Float64

    // 计算Polygon的平面面积 传入的坐标需为地理坐标
    public static func PlanarArea(p : Polygon) : Float64
}

几何点:

public class Point <: Geometry & Serializable<Point>{

    // 点的坐标
    public var coordinate : Coordinate

    // 坐标x值
    public prop var x : Float64

    // 坐标y值
    public prop var y : Float64

    // 创建点
    public init()

    // 通过坐标创建点
    public init(coordinate : Coordinate)

    // 通过坐标和空间参考创建点
    public init(coordinate : Coordinate, sr : SpatialReference)

    // 通过x值和y值创建点
    public init(x : Float64, y : Float64)

    // 通过x值、y值和空间参考创建点
    public init(x : Float64, y : Float64, sr : SpatialReference)

    // 创建空点
    public static func NullPoint() : Point

    // 判断点是否为空点
    public func isNull() : Bool

    // 输出为字符串
    public func toString()

    // 通过JSON格式的点转换为DataModel
    public static func fromJson(jv: JsonValue): DataModel

    // 输出为JSON格式
    public func toJson(): JsonValue

    // 序列化
    public func serialize(): DataModel

    // 反序列化
    static public func deserialize(dm: DataModel): Point

    // 计算两个点的距离
    public func distance(point : Point) : Float64

}

几何线:

public class Polyline <: Geometry & Serializable<Polyline>{

    // 线的坐标数组
    public var coordinates : ArrayList<Coordinate>

    // 获取所有坐标值的x坐标数组
    public prop let xs : ArrayList<Float64>

    // 获取所有坐标值的y坐标数组
    public prop let ys : ArrayList<Float64>

    // 创建线
    public init()

    // 通过坐标数组创建线
    public init(coordinates : ArrayList<Coordinate>)

    // 通过坐标数组和空间参考创建线
    public init(coordinates : ArrayList<Coordinate>, sr : SpatialReference)

    // 通过坐标数组创建线
    public static func fromArray(arr : ArrayList<Array<Float64>>) : ?Polyline

    // 创建空线
    public static func NullPolyline() : Polyline

    // 判断点是否为空点
    public func isNull() : Bool

    // 输出为字符串
    public func toString()

    // 输出为JSON格式
    public func toJson(): JsonValue

    // 通过JSON格式的线转换为DataModel
    public static func fromJson(jv: JsonValue): DataModel

    // 序列化
    public func serialize(): DataModel

    // 反序列化
    public static func deserialize(dm: DataModel): Polyline

    // 计算线的长度
    public func length() : Float64

}

几何面:

public class Polygon <: Geometry & Serializable<Polygon>{

    // 面的坐标数组
    public var coordinates : ArrayList<Coordinate>

    // 获取所有坐标值的x坐标数组
    public prop let xs : ArrayList<Float64>

    // 获取所有坐标值的y坐标数组
    public prop let ys : ArrayList<Float64>

    // 创建面
    public init()

    // 通过坐标数组创建面
    public init(coordinates : ArrayList<Coordinate>)

    // 通过坐标数组和空间参考创建面
    public init(coordinates : ArrayList<Coordinate>, sr : SpatialReference)

    // 通过坐标数组创建面
    public static func fromArray(arr : ArrayList<Array<Float64>>) : ?Polygon

    // 创建空面
    public static func NullPolygon() : Polygon

    // 判断点是否为空点
    public func isNull() : Bool

    // 输出为字符串
    public func toString()

    // 输出为JSON格式
    public func toJson(): JsonValue

    // 通过JSON格式的面转换为DataModel
    public static func fromJson(jv: JsonValue): DataModel

    // 序列化
    public func serialize(): DataModel 

    // 反序列化
    public static func deserialize(dm: DataModel): Polygon 

}