웹 GIS 엔진, FingerEyes-Xr에서 CAD 도면 시각화

지리정보 분야에서 CAD 파일은 수치지도의 구축 및 공유을 위한 목적으로 현재까지도 활발하게 사용되고 있습니다. 흔히 많이 사용되는 SHP 파일보다 더욱 다양한 공간 정보를 ‘지도’라는 개념으로 제공하는데요. 이러한 지도로써의 정보를 그대로 사용자에게 제공할 수 있도록 FingerEyes-Xr을 이용하여 CAD 지도를 웹에서 바로 보여줄 수 있습니다. 이러한 FingerEyes-Xr에서 제공하는 CAD 도면 시각화 기능의 장점은 다음과 같습니다.

사용자는 위의 장점을 웹이라하는 환경에서 모두 얻을 수 있습니다. 아래의 영상은 실제 CAD 도면 하나를 FingerEyes-Xr에서 불러와 웹에서 시각화하는 내용입니다.

CAD 파일을 통해 제공되는 지형지물에 대한 모든 정보를 제공하고 있는데요. 해당 정보는 POLYLINE, LINE, CIRCLE, ARC, TEXT는 물론이고 BLOCK도 제공합니다. 위의 기능 시연에서 사용한 수치지도는 국가공간정보포털에서 제공하는 수치지형도를 이용하였습니다.

단순 선형 회귀에 대한 2가지 접근

잡음이 섞인 샘플 데이터가 선형이라고 가정할때, 이 선형 모델은 기울기와 절편이라는 값으로 정의됩니다. 이 기울기와 절펀에 대한 값을 구하는 방법은 다양한데, 이 글에서는 2가지 접근 방법을 언급합니다. 먼저 잡음이 섞인 샘플 데이터는 다음과 같습니다.

import numpy as np
import matplotlib.pyplot as plt

X = 10 * np.random.rand(100,1)
y = 3.7 - 2.5 * X + np.random.randn(100,1)
plt.scatter(X, y)
plt.show()

위의 코드는 샘플 데이터에 대한 시각화 코드도 포함하고 있는데, 그 결과는 다음과 같습니다.

이제 위의 샘플 데이터에 대한 선형회귀 방법 중 하나인 정규방정식(Normal Equation)에 대한 코드는 다음과 같습니다.

X_b = np.c_[np.ones((100,1)), X]
w = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)
print(w)

plt.scatter(X, y)
drawLine(w[1], w[0])
plt.show()

분석된 절편과 기울기에 대한 출력 및 결과 모델의 선형은 다음과 같습니다.

[[ 3.76686801]
 [-2.50677558]]

아울러 정규방정식은 다음과 같습니다.

    $$(X^{T}X)^{-1}X^{T}y$$

다음은 사이킷런에서 제공하는 LinearRegression 클래스를 이용한 방법입니다.

from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X, y)
w = [model.intercept_[0], model.coef_[0][0]]
print(w)

plt.scatter(X, y)
drawLine(w[1], w[0])
plt.show()

분석된 절편과 기울기에 대한 출력 및 결과 모델의 선형은 다음과 같습니다.

[[ 3.69686801]
 [-2.50677558]]

위의 코드에서 절편과 기울기를 통해 그래프를 그리는 함수인 drawLine은 다음과 같습니다.

def drawLine(m, b):
    X = np.arange(0, 11)
    y = [m * x + b for x in X]
    plt.plot(X, y)