하면 된다!!!

'프로그래밍/GIS'에 해당되는 글 6건

  1. IP Geolocation 정보 다운 받기
  2. Ellipsoid Specifications
  3. Geotools 를 이용한 좌표 변환 (2)
  4. GRS80 Korea TM
  5. 자바스크립트 Spatial Query 소개
  6. Geometry Study...

IP Geolocation 정보 다운 받기

프로그래밍/GIS

개발 하다 보면 IP로 어디서 접속했는지 알아보는 방법이 필요할 때가 있습니다.

아래 사이트에 가시면 데이터베이스를 다운 받으실 수 있고 관련한 개발 라이브러리도 받으실 수 있습니다.

자바스크립트를 위한 API도 제공하네요. 아주 잘 만들어진 듯 합니다.


http://dev.maxmind.com/geoip/legacy/geolite/


관련 데이터는 매월 첫번째 화요일에 업데이트 된다고 합니다.

데이터는 CSV 형태로 제공되니 다운 받으셔서 DB화 하기 어렵지 않으실 것입니다.


IP별 국가, 도시 정보를 제공하고 IPv6 관련한 데이터도 제공하니 활용하실만 할 듯합니다.


정확도는 아직 모르겠네요. 돌려보진 못했습니다.

저는 나중에 필요할때 돌려봐야겠네요.


일단 다운로드~ 뿅~!!!

Ellipsoid Specifications

프로그래밍/GIS

IBM에서 퍼온 자료입니다만... 공통된 정보라서 올려둡니다.

Ellipsoid Specifications

The following table lists all the ellipsoids that are provided with the IBM Informix Geodetic DataBlade module.

IDNameab1/f (편평률)Axis Units
000 WGS84 6378137 298.257223563 Meter
001 Airy 1830 6377563.396 299.32496 Meter
002 Airy Modified 1849 6377340.189 299.32496 Meter
003 Australian National Spheroid 6378160 298.25 Meter
004 Bessel 1841 6377397.155 299.1528218 Meter
005 Bessel Modified 6377492.018 299.1528128 Meter
006 Bessel Namibia 6377483.865 299.1528128 Meter
007 Clarke 1858 20926348 20855233 Clarke's foot
008 Clarke 1866 6378206.400 6356583.8 Meter
009 Clarke 1866 Michigan 20926631.530 20855688.67 US survey foot
010 Clarke 1880 (Benoit) 6378300.79 6356566.43 Meter
011 Clarke 1880 (IGN) 6378249.2 6356515 Meter
012 Clarke 1880 (RGS) 6378249.145 293.465 Meter
013 Clarke 1880 (Arc) 6378249.145 293.4663077 Meter
014 Clarke 1880 (SGA 1922) 6378249.2 293.46598 Meter
015 Everest 1830 (1937 Adjustment) 6377276.345 300.8017 Meter
016 Everest 1830 (1967 Definition) 6377298.556 300.8017 Meter
017 Everest 1830 (1975 Definition) 6377301.243 6356100.231 Meter
018 Everest 1830 Modified 6377304.063 300.8017 Meter
019 GRS 1980 6378137 298.257222101 Meter
020 Helmert 1906 6378200 298.3 Meter
021 Indonesian National Spheroid 6378160 298.247 Meter
022 International 1924 6378388 297 Meter
023 International 1967 6378160 298.247167427 Meter
024 Krassowsky 1940 6378245 298.3 Meter
025 NWL 9D 6378145 298.25 Meter
026 NWL 10D 6378135 298.26 Meter
027 Plessis 1817 6376523 308.64 Meter
028 Struve 1860 6378298.3 294.73 Meter
029 War Office 6378300.583 296 Meter
030 WGS84 6378137 298.257223563 Meter
031 GEM 10C 6378137 298.257223563 Meter
032 OSU86F 6378136.2 298.257223563 Meter
033 OSU91A 6378136.3 298.257223563 Meter
034 Clarke 1880 20926202 20854895 Clarke's foot
035 Sphere 6371000 6371000 Meter
036 GRS 1967 6378160 298.247167427 Meter
037 Clarke Modified 1880 6378249.145 293.465 Meter
038 International 1979 6378137 298.257222101 Meter
039 Hayford 1909 6378388 297 Meter
041 Average Terrestrial System 1977 6378135 298.257 Meter
042 Everest (1830 Definition) 20922931.8 20853374.58 Indian foot (Clarke)
043 WGS 72 6378135 298.26 Meter

Geotools 를 이용한 좌표 변환

프로그래밍/GIS
Geotools를 이용하여 GIS 데이터를 원하는 좌표계로 변경할 때는 다음과 같이 진행합니다.

우선 좌표계에 대한 CRS 선언을 해야합니다.

EPSG (European Petroleum Survey Group) 코드로 정의된 코드라면 다음과 같이 CRS (Coordinate Reference System) 를 정의한다. 흔히 사용되는 WGS84의 경우 아래와 같다.

CoordianteReferenceSystem
sourceCRS = CRS.decode("EPSG:4326");

Geotools에서는 이와 같이 EPSG 코드로 정의되지 않는 좌표계 같은 경우에는 WKT (Well Known Text)로 구성된 좌표계 정의를 CRS로 만들어낼 수 있는 방법을 제공한다. 아래의 예는 GRS80 중부원점 TM에 대한 정의이다.

 String targetWKT = "PROJCS[\"ITRF_2000_TM_Korea_Central_Belt\","
        + " GEOGCS[\"GCS_ITRF_2000\","
        + "  DATUM[\"D_ITRF_2000\", SPHEROID[\"GRS_1980\", 6378137.0, 298.257222101]],"
        + "  PRIMEM[\"Greenwich\",0.0],"
        + "  UNIT[\"Degree\",0.017453292519943295]"
        + " ],"
        + " PROJECTION[\"Transverse_Mercator\"],"
        + " PARAMETER[\"False_Easting\", 200000.0],"
        + " PARAMETER[\"False_Northing\", 500000.0],"
        + " PARAMETER[\"Central_Meridian\", 127.0],"
        + " PARAMETER[\"Scale_Factor\", 1.0],"
        + " PARAMETER[\"Latitude_Of_Origin\", 38.0],"
        + " UNIT[\"Meter\", 1.0]]";

이와 같이 정의된 좌표계간에 변환은 다음과 같이 변환할 수 있다.

      CRSFactory crsFactory = ReferencingFactoryFinder.getCRSFactory(null);
      CoordinateReferenceSystem targetCRS = null;
      targetCRS = crsFactory.createFromWKT(targetWKT); // WKT를 CRS로 만들어냄

      CoordianteReferenceSystem sourceCRS = CRS.decode("EPSG:4326");

      MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS);
      Geometry transCoordGeometry = JTS.transform(orgGeometry, transform);


짜잔~~~ orgGeometry 를 좌표계 변환하여 transCoordGeometry로 변환에 성공했다.



GRS80 Korea TM

프로그래밍/GIS
다들 아시겠지만 2010년부터 지도 정보는 세계측지계(GRS80)을 기준으로 만들어져야 합니다. 이에 따라서 기존에 사용하던 좌표계를 폐기할 이유는 없지만 GRS80 중부 TM에 대한 지원은 필수가 되었습니다.

필요하실 듯 하여 올려둡니다. 이미 다들 아시겠지만... 훔


GRS80 Korea TM 은 아래와 같다.

  • WGS84 Bounds: 115.5762, 30.6757, 140.0977, 42.9403
  • Projected Bounds: -898192.6797, -256153.1648, 1460355.4161, 1132644.6538
  • OGC WKT (Well Known Text) 값
     PROJCS["ITRF_2000_TM_Korea_Central_Belt",
        GEOGCS["GCS_ITRF_2000",
            DATUM["D_ITRF_2000",
                SPHEROID["GRS_1980",6378137.0,298.257222101]],
            PRIMEM["Greenwich",0.0],
            UNIT["Degree",0.0174532925199433]],
        PROJECTION["Transverse_Mercator"],
        PARAMETER["False_Easting",200000.0],
        PARAMETER["False_Northing",500000.0],
        PARAMETER["Central_Meridian",127.0],
        PARAMETER["Scale_Factor",1.0],
        PARAMETER["Latitude_Of_Origin",38.0],
        UNIT["Meter",1.0]]

    ※ 참고 URL : http://spatialreference.org/ref/sr-org/6640/

  • 자바스크립트 Spatial Query 소개

    프로그래밍/GIS
    Ajaxian.com 이란 사이트에서 본 기사이다.

    자바스크립트로 처리해야할 기하관련 처리 함수들을 잘 만들어둔 스크립트 라이브러리이다.
    보통은 자바의 AWT를 활용해서 처리해서 스크립트에서는 단순히 보여주는 기능만을 구현했었는데 좋은 자료로 보인다.

    팀원에게 스터디를 하라고 지시했다. 도움이 많이 될듯...

    관심이 있으신 분은 아래의 글을 보시고 링크 따라 가서 보세용~

    Chris Zelenak has created Spacial Query a very nice library for spatial math. He told us:

    I recently wrote up a library to help me with operations on polygons, and ended up adding some stuff for dealing with matrix, vector and latitude longitude primitives as well. The name is taken from the JQuery style chaining in the library, that I added just because, well...I like JQuery, and I like being able to do things like:

    JAVASCRIPT:
    1.  
    2. $ll([latitude, longitude]).vector().project_onto([wsg84x, wsg84y, wsg84z]).latlng()
    3.  

    It adds a series of $ methods to the global namespace - $p for polygons, $v for vectors, $m for matrices and $ll for latitude/longitude coordinates.

    Most vector and matrix operations support calculations to any dimension size.

    In cases where they are not supported, one of the two following cases will arise:

    • The function will be named _2d or _3d to indicate what dimension the operated data should be in
    • The function will throw an error stating that the general case solution has not been implemented yet. (Matrix inversion, for example)

    Geometry Study...

    프로그래밍/GIS
    지도... 그리고 기하...

    기하 하니깐 문득 태왕사신기에서 기하님 (문소리)이 생각나네...  쿨럭~

    사용자 삽입 이미지


    Shape 데이터를 분석해서 여러 Geometry 요소들에 대한 상호 관계부터 연산까지 해보고 있다.

    최근에 관심있게 보고 있는 것은 Vivid JTS Topology Suits ~~~

    사용자 삽입 이미지


    이거 이거 명물이로세... 열심히 분석해서 분석 자료 공유해보리다~

    나~안 기하학을 열심히 공부하고 있을 뿐이고~

    폴리곤 그렸더니 나를 가두는 감옥 같은 느낌이 들 뿐이고~