2016-07-04 1 views
3

저는 다양한 xy z 데이터 세트가있는 프로젝트에서 수백 개의 일관된 등고선 맵을 생성해야하는 지질 학자입니다.불규칙한 x, y 데이터 포인트를 등고선 매핑을위한 일반 그리드로 보간

등고선 불규칙한 xyz 데이터 포인트는 균일 한 x-y 메쉬에서 보간 된 (외삽 된) z 값의 '그리드'생성과 관련됩니다. R 외부 -이 단계를 '그리딩'이라고합니다. 나는 R에 비교적 익숙하지 않고 많은 수의 불규칙한 데이터 포인트 그리드를위한 강력한 워크 플로를 설정하려고합니다. 나는 고군분투하고있다!

고전적인 윤곽 매핑 소프트웨어에

및 워크 플로우 단계는 다음과 같습니다

  • 최종지도에 대한 관심 지역 (AOI)를 결정

    1. 읽기 x 및 y z의 데이터입니다. 이 xMin, XMAX, Ymin를, Ymax 순
    2. 그리드 간격 (XINT, YINT을) 결정 - '그리드'(NROW,을 NcoI)
    3. 이 필요한 보간 중 하나를 적용하려면 열의 행 없음과 없음을 설정하지 - 만드는 것이 일반 메쉬/그리드에서 'Z'(일반 보간은 다음 등 역 거리, 역 제곱 거리의 가중 평균, 다항식, 클리 깅, 스플라인)
    4. 윤곽 결과 '격자'

    내가은 분석을 통해 유연성과 제어를 위해 위의 단계 순서를 정확히 따르기 위해 R 스크립트를 작성하려고합니다.

    df는 예제 데이터 세트로 구성된 데이터 프레임입니다.

     wellid property   z  x  y 
        060010  1 0.008849558 756994.5 2637732 
        009410  1 0.260162602 760190.9 2622262 
        009910  1 0.115044248 760898.7 2637466 
        051110  1 0.109243697 761690.2 2630985 
        065610  1 0.066666667 763064.1 2620929 
        011010  1 0.000000000 763089.3 2630888 
        035210  1 0.022556391 765942.4 2625944 
        052510  1 0.157894737 767058.1 2650034 
        006610  1 0.045045045 768265.0 2645318 
        009010  1 0.378151261 768471.8 2636731 
        011210  1 0.028776978 771393.8 2629001 
        064810  1 0.428571429 771394.1 2650776 
        009110  1 0.064220183 775332.6 2648531 
        011410  1 0.148760331 778324.8 2633905 
        065010  1 0.514851485 780480.9 2654874 
        052410  1 0.173913043 780961.0 2637571 
        064110  1 0.019417476 781001.5 2650994 
        009310  1 0.037383178 783904.7 2641130 
        010810  1 0.041237113 786200.6 2652417 
        052610  1 0.150537634 788007.5 2654005 
    

    관심 영역

    아래와 같이 학습 영역에서 결정된다

    xmin <- signif(min(wellcoords$x),4) - 1000 
        xmax <- signif(max(wellcoords$x),4) +1000 
        ymin <- signif(min(wellcoords$y),5) - 1000 
        ymax <- signif(max(wellcoords$y),5) +1000 
        xrange <- xmax-xmin 
        yrange <- ymax-ymin 
        gridint <- 500  # grid interval is set same for xint and yint 
    

    값은 : 754,700, 791500261960002658600, 36800, 39000, (500) 각각.

    많은 시도가 실패한 후 package - akima에서 interp() 함수를 사용하여 필요한 보간 작업을 수행했습니다. 덕분에 내가 원하는대로 AOI 컨트롤을 지정하는 것을 허용하지 않았다

    fld<- with(df, interp(x=df$x, y=df$y, z=df$z, xo=xcoord, yo=ycoord, linear = FALSE, extrap = TRUE)) 
    

    이 "불규칙한 격자에 플로팅 윤곽"에 응답합니다. 패키지 MBA를 사용하면서 xy.est 매개 변수 (그리드 메쉬)를 필요한 입력으로 생성하려고했습니다.

    '그리드'가 적절하게 생성되면 ggplot2 및 기타 디스플레이 기능이 강력하고 충분합니다.

    적절한 '격자'패키지 또는 '단계'가 있습니까? 미리 감사드립니다.

  • 답변

    4

    akima (그리고 ggplot2과 같은 그래픽 패키지) 이외의 다른 패키지를 사용하지 않아도된다고 생각합니다. interp의 인수로 AOI와 No를 '격자'로 지정할 수 있습니다. xoyo. 그리고 xy.est 매개 변수를 interp2xyz(interp.obj)까지 가져올 수 있습니다.

    df <- "your example data set" 
    # I didn't know What wellcoords were, so I treated df as wellcoords. These values are different from what you said. 
    xmin <- signif(min(df$x),4) - 1000 # 756000 
    xmax <- signif(max(df$x),4) + 1000 # 789000 
    ymin <- signif(min(df$y),5) - 1000 # 2619900 
    ymax <- signif(max(df$y),5) + 1000 # 2655900 
    gridint <- 500 
    
    library(akima) 
    fld<- with(df, interp(x = x, y = y, z = z, linear = FALSE, extrap = TRUE, 
             xo=seq(xmin, xmax, length=gridint), 
             yo=seq(ymin, ymax, length=gridint))) # give AOI and NO of 'grid' 
    # check whether the conditions are met. 
    length(fld$x); length(fld$y); length(fld$z); range(fld$x); range(fld$y) 
        # 500, 500, 250000 (=500^2), 756000 789000, 2619900 2655900, # all OK 
    
    contour(fld) # Left graph (most basic graphic output) 
    
    fld2 <- as.data.frame(interp2xyz(fld)) # the xy.est parameter (data.frame) 
    library(ggplot2) 
    ggplot(fld2, aes(x=x, y=y, z=z)) + geom_contour() # Right graph (simple example) 
    

    enter image description here

    관련 문제