geometry :: 这个是.net写的?

解决方案 »

  1.   


    这个是ArcGIS 计算经纬度的函数,sqlserver2008里有个字段类型是shape,就是这个函数计算后的结果值类型
      

  2.   

    python里我不太清楚是不是有这个东西,但这确实是ArcGIS的函数,所以python里应该有类似的函数。
      

  3.   

    按照网上的一些说法,.net 4.0不支持,需要降到.net 3.5
      

  4.   

    我之前在sql server 2008r下,用过 geography 下面的函数,那么geometry应该也是可以用的,你运行一下下面的代码,看会报错吗,如果也会报错,说明你的sql server 在安装时没安装好,或者当时安装的没问题,后来由于安装了其他的.net framework后有了冲突,或者被删除了:
    --3.建立有空间数据的表
    create table x
    (
    v int not null identity(1,1) primary key,
    geog geography not null,
    geogWKT as geog.STAsText()
    )
    --4.添加空间数据
    insert into x(geog)
    values(geography::Parse('POLYGON(
                                      (-93.123 36.943,
                                       -93.126 36.953,
                                       -94.129 36.986,
                                       -93.123 36.943)
                                     )'
                           )
             ),   --多边形,开始坐标和结束坐标必须相同,注意polygon中必须包含2层括号,否则报错
           
           (geography::Parse('POINT(-93.123 36.943)')),    --点坐标
           
           (geography::Parse('LINESTRING(-93.123 36.943,
                                         -93.126 36.953)')
                             )  --两坐标之间的线
    --5.地理数据的计算  
    select v,
           geogWKT,
           geog.STDistance('POINT (-93.123 36.985)'),          --距离
           geog.STIntersects('POINT (-93.123 36.943)'),        --是否有交集
           geog.STLength(),                                    --长度
           geog.STArea(),                                      --多边形面积
           geog.STAsText()                                     --WKT格式的坐标      
    from x
    /*
    v geogWKT (无列名) (无列名) (无列名) (无列名) (无列名)
    1 POLYGON ((-93.123 36.943, -93.126 36.953, -94.129 36.986, -93.123 36.943)) 3561.29978820883 1 180244.411606998 48996227.1008911 POLYGON ((-93.123 36.943, -93.126 36.953, -94.129 36.986, -93.123 36.943))
    2 POINT (-93.123 36.943) 4661.03285004629 1 0 0 POINT (-93.123 36.943)
    3 LINESTRING (-93.123 36.943, -93.126 36.953) 3561.29978820883 1 1141.48450709835 0 LINESTRING (-93.123 36.943, -93.126 36.953)
    */