2011년 3월 22일 화요일

[SLD] SLD for Unique Value Renderer Map

GeoServer에서 사용가능한 SLD(Styled Layer Descriptor) 샘플입니다.
cotype 이라는 필드(아래에서 <ogc:PropertyName>cotype</ogc:PropertyName>) 이름을 사용하므로 다른 레이어에서는 필드 이름 및 값을 바꿔주면 됩니다.

Unique Value Renderer 이므로 Filter를 응용하면 Graduated Color, Graduated Symbol 등 거의 모든 Polygon Symbolizing이 가능합니다.

▣ SLD 참고
 - Geoserver SLD Cookbook

▣ Legend

▣ Map: GeoServer + OpenLayers

▣ SLD
<?xml version="1.0" encoding="utf-8"?>
<StyledLayerDescriptor version="1.0.0" xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">
  <NamedLayer>
    <Name>Local_Moran's I Cluster Map</Name>
    <UserStyle>
      <Name>Cluster Map</Name>
      <Title>Cluster Map</Title>
      <Abstract>Cluster Map</Abstract>
      <FeatureTypeStyle>
        <Rule>
          <Title>HH</Title>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>cotype</ogc:PropertyName>
              <ogc:Literal>HH</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#FF6347</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#6E6E6E</CssParameter>
              <CssParameter name="stroke-width">0.5</CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>
        <Rule>
          <Title>LH</Title>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>cotype</ogc:PropertyName>
              <ogc:Literal>LH</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#FAFAD2</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#6E6E6E</CssParameter>
              <CssParameter name="stroke-width">0.5</CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>
        <Rule>
          <Title>LL</Title>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>cotype</ogc:PropertyName>
              <ogc:Literal>LL</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#6495ED</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#6E6E6E</CssParameter>
              <CssParameter name="stroke-width">0.5</CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>
        <Rule>
          <Title>HL</Title>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>cotype</ogc:PropertyName>
              <ogc:Literal>HL</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#D8BFD8</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#6E6E6E</CssParameter>
              <CssParameter name="stroke-width">0.5</CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>
        <Rule>
          <Title>Not Significant</Title>
          <ogc:Filter>
            <ogc:Or>
              <ogc:PropertyIsNull>
                <ogc:PropertyName>cotype</ogc:PropertyName>
              </ogc:PropertyIsNull>
              <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>cotype</ogc:PropertyName>
                <ogc:Literal></ogc:Literal>
              </ogc:PropertyIsEqualTo>
            </ogc:Or>
          </ogc:Filter>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#FFFFFF</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#6E6E6E</CssParameter>
              <CssParameter name="stroke-width">0.5</CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

[Shapefile] Sample Datasets for Spatial Statistics Analysis

 KOPSS API 구현 중 공간통계 분석기법을 공부하기 위한 샘플 데이터셋입니다.

▣ Sample Dataset
 - Point Data : seoul_bp_apt
 - Area Data : seoul_hexagon_500(반경 500m), seoul_hexagon_1000(반경 1km) hexagonal grid dataset
   : EVE_CNT Field 는 Area 내 포함된 Point의 갯수

 - Sample Dataset: spatialstatistics_sampledata.zip

Thematic Map

Average Nearest Neighbor
|| Average Nearest Neighbor Summary
|| Observed Mean Distance: 155.993804
|| Expected Mean Distance: 234.477308
|| Nearest Neighbor Ratio: 0.665283
|| Z Score: -33.640542
|| p-value: 0.000000


High/Low Clustering (Getis-Ord General G)
|| General G Summary
|| Observed General G : 0.000019
|| Expected General G : 0.000011
|| Variance : 0
|| Z Score : 13.834027
|| p-value : 0

Spatial Autocorrelation (Global Moran's I)
|| Global Moran's I Summary
|| Moran's Index : 0.414923
|| Expected Index : -0.003636
|| Variance : 0.00131
|| Z Score : 11.566211
|| p-value : 0

Hot Spot Analysis (Getis-Ord Gi*)

Cluster and Outlier Analysis (Anselin Local Moran's I)

2011년 3월 7일 월요일

Flow Map in Cartography

▣ Wikipedia
 - http://en.wikipedia.org/wiki/Flow_map

▣ Flow Map Layout
View more presentations from doantamphan
▣ Tobler's Flow Mapper
- http://www.csiss.org/clearinghouse/FlowMapper/
http://www.geog.ucsb.edu/~tobler/


▣ JFlowMap
 - http://code.google.com/p/jflowmap/


▣ External links
 - Weighted flow diagrams for statistical output
 - Implementation and evaluation of a Flow Map Demonstrator for analyzing work commuting flows between Norway and Sweden
 - Mapperz - The Mapping News Blog
Sean Cupolo's UWF Special Topics in GIS, Remote Sensing & Cartographic Skills Blog
Immigration Flow Map
- Flow Map Layout

[Map]대한민국 교회분포

2010년 7월에 한번 포스팅 했었습니다.
 - [Map]우리나라 교회 분포 지도

▣ 자료 출처
 - 한국컴퓨터선교회(http://kcm.kr)

▣ 지도제작
 - 약 3만 8천개의 주소를 지오코딩
 - 실제 대한민국의 교회수는 얼마나 될까요? 정확한 통계가 나온 곳은 없더군요. 어림잡아 6~7만(?)개로 추측하고 있네요. 따라서 아래 분포도 보도 실제로는 더 많다고 보면 되겠습니다.

▣ 구글맵에서 서울 주변 교회 검색 결과

▣ 전체

▣ 중부지방

▣ 남부지방

▣ 수도권


▣ 부산

▣ 대구

▣ 대전

▣ 광주

2011년 3월 6일 일요일

Creating a slope using data in Geographic coordinates

경위도 좌표계를 가진 DEM으로 경사도 분석시 오류 대처 방안입니다.


▣ 원문 출처

▣ DEM 출처 및 샘플데이터
 - ASTER GDEM : http://www.gdem.aster.ersdac.or.jp/
 - 이 블로그 내 소개: ASTER Global Digital Elevation Map
 - 샘플데이터
  : 다운로드한 DEM Merge 후 제주도 부분 clip
  : ASTER_GDEM_JEJU.zip

▣ 샘플 DEM
 - Columns and Rows: 3148, 1892
 - Coordinate Reference System: GCS_WGS_1984(EPSG:4326)
 - Min X: 126.121410883696
 - Min Y: 33.094139773836
 - Max X: 126.99585532814
 - Max Y: 33.6196953293916
 - CellSize = 0.00027777778

▣ DEM -> Hillshade

▣ DEM ->Slope : Z factor = 1

▣ DEM -> Slope : Z factor = 0.000003

▣ DEM -> Slope : Z factor = 0.000008834378
 1. Determine what the middle latitude of the area of interest is.
 : middle latitude = (Minimum Y + Maximum Y) / 2.0
            = (33.094139773836 + 33.6196953293916) / 2.0
            = 33.3569175516138

2. Convert that degree value to radians. 
 : 1 degree = 0.0174532925 radians = PI / 180.0
 : input latitude in radians = 33.3569175516138 * (PI / 180.0)
                                     = 0.5821880395919463711183838467741
                         
3. Use the value in radians in the following equation:
 : Z factor = 1.0 / (113200 * cos(input latitude in radians)) 
 : cos(input latitude in radians) = 0.99994837648629650508861336534359
 :  ∴ Z factor = 1.0 / (113200 * cos(0.5821880395919463711183838467741)) 
               = 0.0000088343783231345251334838953833445



2011년 3월 4일 금요일

[foursquare] 2011/03/04 기준 서울/경기 지하철역별 체크인 순위 지도 및 표

지리정보시스템(GIS) 관련 자료 만들면서 포스퀘어 데이터 수집하다 욕심이 생겨서 서울/경기 지하철역 베뉴를 수집해 봤습니다.
처음에 자동수집이 가능하겠다 싶어 시작했는데, 베뉴명이 통일이 안돼 있어서 고생 엄청 했습니다.

▣ 개요
2011년 3월 4일 오전 8시 기준 서울/경기지역 지하철역별 포스퀘어 체크인 현황입니다.

지도는 오픈소스를 활용해 제작했습니다.
 - PostGIS, GeoServer, GeoExt(ExtJS + OpenLayers)

 * 문제점
 - 베뉴 정리가 안된 곳은 실제 체크인 수가 많으나 분산되어 있을 수 있습니다. 예를 들면, 고속터미널역 등 환승역처럼 다수의 베뉴가 등록된 곳
 - 혹시, 빠트린 역 있으면 알려주세요. 추가해서 가능하면 정기적(?)으로 데이터를 수집해 볼 까 합니다.

▣ Excel 파일
 - 첨부한 엑셀 자료는 마음대로(?) 사용해도 됩니다. ^^
 - foursquare_korea_station_checkins_20110304.xlsx

▣ 체크인 순위 20위


▣ 역별 체크인 Graduated Symbol Map



[ArcGIS]포인트 레이어에 TIN Elevation, Slope, Aspect 값 계산

포인트 레이어의 필드에 TIN의 Elevation, Slope, Aspect값을 계산하는 VBA 스크립트 예입니다.
TIN(Triangulated Irregular Network) 레이어와 사용자가 수집한 포인트 레이어가 있을 경우 각 포인트 위치의 Elevation, Slope, Aspect값을 필드값으로 계산할 수 있습니다.


▣ 전제사항
- ArcMap에 포인트 레이어 및 TIN 레이어가 추가되어 있을 것
- 포인트 레이어는 Shapefile, Personal GDB(mdb), File GDB일 것
- 스크립트 실행 조건은 편집 상태가 아닐것(Update Cursor를 사용하기 때문임)


▣ 결과
- 포인트 레이어에 Elevation, Slope, Aspect 필드(Double형)가 생성되고, 각 필드에 TIN으로부터 추출한 값이 계산


▣ 주요 인터페이스
 -  ITinLayer,  ITinSurface2, ITinSurfaceElement Interface를 사용


▣ 전체 소스코드 첨부
- TINValueCalculator.bas

▣ 계산결과 예시