넥스젠(NexGen)의 위치기반 컨텍스트 메뉴

넥스젠(NexGen)은 지도(위치)와 연관되는 기능을 사용자 사고(Thinking)의 흐름(문맥, 컨텍스트, Context)이 끊기지 않고 사용할 수 있도록 컨텍스트(Context) 메뉴를 제공합니다.

넥스젠에서 제공하는 위치기반 컨텍스트 메뉴의 기본 구성 항목은 선택한 위치를 중심으로 지도의 확대 및 축소, 선택한 지점의 북마크 지정, 선택한 위치의 인근 주소 확인, 선택한 위치의 좌표 취득, 선택한 위치의 표고 취득, 선택한 지적필지의 평균경사도 취득, 최단경로에 대한 출발점과 도착점을 선택한 지점을 바로 지정하는 기능입니다.

지도 상에 기능을 선택하고자 하는 지점 위에 마우스 커서를 놓고 오른쪽 버튼하면 다음과 같은 메뉴가 표시됩니다.

물론 이 기본 기능에 사용자에게 특화된 메뉴를 추가할 수 있습니다. 넥스젠에서 제공하는 기본적인 컨텍스트 메뉴를 실제 활용하는 동영상은 아래와 같습니다.

넥스젠은 순수한 웹 기술만으로 개발된 웹 지리정보시스템(GIS)입니다. IE, 크롬, 사파리, Firefox 모두를 지원합니다.

수치미분(접선)의 결과를 그래프로 표현하기

다음과 같은 함수가 있을 때.. 이 함수를 미분한 결과는 이 함수의 그래프에 대한 접선의 방정식이 됩니다.

위 함수에 대한 코드 정의는 다음과 같습니다.

def fx(x):
    return x**3 + x

미분은, 중앙차분 방식으로 정의하면 다음과 같구요.

def numerical_diff(f, x):
    h = 1e-4
    return (f(x+h) - f(x-h)) / (2*h)

미분 결과는 접선인데, 이 접선을 표현하는 함수를 반환하는 함수는 다음과 같습니다.

def tangent_line(f, x):
    d = numerical_diff(f, x)
    y = f(x) - d*x
    return lambda t: d*t + y

이제 x 절편의 범위를 0~20까지 잡고 함수의 그래프와 이 함수의 x = 11에서의 접선을 그리는 코드는 다음과 같습니다.

import numpy as np
import matplotlib.pylab as plt

# def numerical_diff(f, x):
# def tangent_line(f, x):
# def fx(x):

x = np.arange(0.0, 20.0, 0.1)
y = fx(x)
plt.plot(x,y)

tf = tangent_line(fx, 11)
y2 = tf(x)
plt.plot(x, y2)

plt.show()

결과 그래프는 다음과 같습니다.

이와 같은 미분에 대한 파이선 코드는 기계 학습이나 신경망 학습에서 가중치와 편향에 대한 최적의 값을 얻기 위해 활용되는 경사하강법(Gradient Descent Method)에서 사용됩니다.