JAVA에서 Gdal을 사용하기 전에 고려해야할 것.

소프트웨어 개발/JAVA|2019. 5. 20. 11:18

Java에서 Gdal을 사용하는 사람이라면, GIS 데이터를 JAVA에서 처리하기 위한 목적으로 해당 라이브러리를 고려했을것이다. 하지만, Gdal은 태생이 C/C++로 작성된 라이브러리이고, JAVA로 포팅된게 아닌 랩핑(Wrapping)된 형태의 라이브러리임을 명심해야한다.

 

이는 윈도우 환경에서 개발한 웹어플리케이션이 리눅스나 클라우드환경의 서버에서 작동이 제대로 되지 않을 수 있으며, 안드로이드 개발시에도 해당 장치의 CPU에 대응해 빌드된 Gdal 라이브러리(윈도의 dll파일의 역활을 하는 so 파일들)가 필요한 것이다.

 

만일 처리하고자 하는 GIS 데이터가 레스터가 아닌 백터데이터(Shape, KML, GeoJSON, 등) 뿐이라면 굳이 힘들게 네이티브 라이브러리때문에 고생을 하지말고 Java로 작성된 GeoTools를 사용하길 바란다.

 

Java에서 Gdal을 사용하는 방법

댓글()

전자정부프레임워크 3.6 샘플 웹 프로젝트

소프트웨어 개발/JAVA|2017. 4. 12. 10:18


전자정부프레임워크 3.6의 샘플 웹 프로젝트의 수정본입니다.

주안점은 Servlet 3.1 적용과 Eclipse Validater에 아무것도 걸리지 않는 코드를 목표로 수정하였습니다.


개인적으로 이제 iBatis는 놓아줘야할 때가 아닌가 싶습니다. Apache에서도 더이상 관리 안하고 myBatis 사용하라고 안내하고, Hibernate ORM이나 JPA ORM 쪽으로 개발하는게 좋을것 같습니다.


변경사항:

  • POM 수정: Servlet 3.1 적용, JSP 2.3.1 적용, JDK 1.8변경, Jetty-maven-plugin 추가
  • web.xml 수정: : Servlet 3.1 적용
  • ibatis제거: ibatis 샘플 자바코드, sqlmap, mapconfig, 등 제거
  • JSP 파일의 Validator 통과 못하는 구문 수정


Test36.zip



댓글()

C#에서 Thread내에 Parallel.Foreach 가 있는 경우 중단 방법

소프트웨어 개발/C#|2017. 1. 9. 12:59

GUI 환경에서 버튼을 클릭하는 등의 이벤트로 시간이 오래걸리는 작업을 구동하는 경우 쓰레드를 분리하여 개발하는 방법이 좋다는 방법은 C# 뿐만 아니라 안드로이드나 MFC등 GUI를 어느 정도 개발한 사람이라면 익숙할 것이라고 생각한다.


그렇다면 그 시간이 오래 걸리는 작업을 더욱 빠르게 하고 싶다면 병렬 처리가 가장 쉽고 빨리 적용할 수 있는 합리적인 방법이라고 생각한다.


구글링을 통하여 어찌어찌 병렬 For문을 적용하였지만 문제는 "클라이언트가 구동은 했지만 오래 걸리는 프로세스를 작업 도중에 중단하고 싶다"고 말했을때 발생하였다.


다음은 몇가지 코드를 조합하여 만든 메인 쓰레드와 분리된 다중 포문 작업 클래스와 그 작업을 중단 시키는 예를 콘솔 응용프로그램으로 구성하였다.

소스코드

메인 클래스 및 중단 클래스




시간이 오래걸리는 작업 클래스



참조


http://www.albahari.com/threading/part3.aspx

댓글()

[ES6] ECMAScript6 배우기 - ES6란

ES6란?

ECMAScript는 ECMA  인터내셔널의 ECMA-262 와 ISO/IEC16262에 근거한 표준 스크립트 언어

한마디로 최신 규약의 자바스크립트 이다. 흔히 ES6라 불린다.



환경 구축

모든 자바스크립트 엔진이 ES6를 완전히 지원하지 않아 별도의 트랜스파일러가 필요하다.

브라우저에서 코드를 테스트하려면 매번 페이지가 로딩될 때마다 ES6에서 ES5로 코드를 변환 해주는 traceur(트레이서)라는 웹 페이지에 내장하여 사용해야 한다.


빠른 학습을 위해 로컬에 구축하는것보다는 http://codepen.io/pen/ 에서 javascripts에 바벨을 추가하여 학습할 계획이다.




ES6 호환성

자바스크립트 엔진별로 ES6 여러 기능의 지원 여부를 확인 할 수 있도록 표시 되어 있으니 확인이 필요하다.

https://kangax.github.io/compat-table/es6/










댓글()

Windows에서 GEOS 3.5 빌드

카테고리 없음|2016. 5. 4. 16:24

이 글은 Windows 10 환경의 Visual Studio 2015을 기준으로 작성되었습니다.

GEOS는 JAVA JTS(Java Topology Suite)를 C++로 포팅한 라이브러리입니다. C/C++에서 벡터 데이터의 위상관계분석과 공간연산등에 사용되는 기하 처리 엔진입니다.

Windows 환경에서 GEOS를 빌드하려면 다음의 조건을 갖추어야합니다.

※ CMake를 설치한 직후에는 시스템환경변수의 PATH가 적용이 되지 않는 경우가 있 재부팅을 하면 해결이되나 재부팅하지 않고 exploerer의 프로세스를 죽이고( taskkill /f /im explorer.exe ) 다시 실행시키면 시스템 환경변수가 적용됨


디렉토리 구조 갖추기

먼저 다음과 같이 디렉토리 구조를 생성합니다

C:\GEOS

\archives --  서드파티 소스의 Zip, tar.gz, tar.bz 등을 담음

\x64 -- x64으로 빌드된 바이너리와 소스를 담음

\bin -- x64으로 빌드된 서드파티 바이너리와 소스를 담음

\data -- 서드파티 데이터파일을 다음

\html -- 서드파티 정보를 담음(html형식)

\include -- 서드파티 헤더파일을 담음

\lib -- 서드파티 static/ stub 라이브라리를 담음

\share -- 메뉴얼과 기타 파일을 담음

\src -- 서드파티 소스를 담음

\x86 -- x86으로 빌드된 바이너리와 소스를 담음

\bin -- x86으로 빌드된 서드파티 바이너리와 소스를 담음

\data -- 서드파티 데이터파일을 다음

\html -- 서드파티 정보를 담음(html형식)

\include -- 서드파티 헤더파일을 담음

\lib -- 서드파티 static/ stub 라이브라리를 담음

\share -- 메뉴얼과 기타 파일을 담음

\src -- 서드파티 소스를 담음


GEOS 소스코드 다운로드

GEOS 소스코드를 C:\src\archives 경로에 다운로드 받습니다. 그리고 C:\src\x86 과 C:\src\x64 경로에 모두 풀어줍니다.


GEOS 3.5 빌드

명령프롬프트(cmd.exe)에서  32비트의 경우 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\vcvars32.bat 을 64비트의 경우 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\AMD64\bin\vcvars64.bat을 실행시켜줍니다.

※ Visual Studio의 버전에 따라서 Microsfot Visual Studio 14.0 의 경로는 달라지니 주의

C:\src\x86\src\geos-3.5.0\ 으로 가셔서 autogen.bat을 실행시켜줍니다. =>버전정보와 관련된 헤더파일을 복사해 줌


## Geos 3.5.0 에 문제가 있어서 CMake가 되지 않습니다. 아래와 같이 대처하시면 CMake를 사용하실 수 있습니다

GEOS 3.5.0에 CMake 빌드 오류 관련 이슈가 있었습니다. 현재는 수정은 되었지만 3.5.1이 배포되지 않았습니다.

1. 다음 링크로 직접 수정하실 수 있습니다. https://trac.osgeo.org/geos/ticket/753#comment:9

2. SVN 저장소의 수정된 버전 다운로드(주의 정식배포본이 아님)  https://trac.osgeo.org/geos/browser/branches/3.5?rev=4204&format=zip

2.1 압축을 푼 소스의 경로에 geos_svn_revision.h 파일을 생성하여 다음의 내용을 넣고 저장을 해주세요. (4204는 리비전 번호)

#define GEOS_SVN_REVISION 4204


build 디렉토리를 생성하고 build 디렉토리로 이동하여 다음을 실행합니다.

cmake-gui ../


그리고 Configure를 누르고 NMAKE Makefile을 선택하고 다음과 같이 편집을 해 주세요.

CMAKE_BUIL_TYPE = Release

CMAKE_INTALL_PREFIX= C:\geos\x32\

GEOS_ENABLE_TEST=unchecked

그리고 다시한번 Configure 버튼을 누르고 Generate를 하시면 build 디렉토리에 NMake를 할 수 있는 환경이 갖춰집니다.

이제 명령 프롬프트로 돌아와서 NMake를 치고 100%가 될때 까지 기다리고 NMake install을 치고 기다리면 됩니다.



댓글()

JAVA에서 GDAL 사용법

소프트웨어 개발/JAVA|2016. 4. 28. 15:52

GDAL 은 JAVA로 아주 잘 바인딩 되었지만 문서가 아주아주 제한적입니다. API 문서는 파이썬의 문서보다는 훨 나은 편이만 단순한 예제를 실행하는 방법을 찾기도 매우 어렵습니다.

설치(Ubuntu)

Ubuntu 배포판에는 GDAL 패키지이지만 JAVA 바인딩은 포함되지 않습니다. 따라서 그것을 가지고 라이브러리를 컴파일할 필요가 있습니다.

이미 패키지로부터 설치된 GDAL 라이브러리를 가지고 있는 경우 그것들을 제거할 필요가 없습니다. 컴파일하기전에 swig, libgeos-dev 그리고 proj4 패키지가 설치되어 있는지를 확인합니다.

그리고 실행하시요:


/gdal의 경로/swig/java 디렉터리로 이동하고 java.opt 파일을 열어 정확한 JAVA_HOME 변수로 설정하도록 수정합니다. (기본값으로 Windows 설치본?으로 설정되어있음)

make를 타이핑 합니다.

gdal.jar 파일이 /gdal의 경로/swig/java 디렉터리에 생성됩니다.

GDAL Java 바인딩 설치를 위한 공식 문서는 여기: http://trac.osgeo.org/gdal/wiki/GdalOgrInJavaBuildInstructionsUnix

클래스(.class) 실행하기

GDAL Java 바인딩은 네이티브 GDAL 설치본을 사용합니다. 그리고 그건 JNI를 사용하여 만들었죠. JAVA 가상머신은 반드시 GDAL 바이너리를 찾아야만 합니다. 따라서 실행하려면 환경변수가 반드시 설정이 되어야하죠. 리눅스에서의 커멘드라인에서는 다음과 같이 입력하시면 됩니다.

여기에서 path_to 는 당신이 컴파일한 경로입니다.

만약 코드에서 어떠한 좌표 변환을 사용한다면, GDAL은 반드시 gcs.csv라는 이름의 파일을 찾게되어있습니다.

실행할 때 이 파일이 어디있는지 찾을 수 있게 지정하려면:


환경변수로서 지정을 하려면:


또는 직접 실행 할 수도 있습니다:


classpath에 gdal.jar파일을 include시키는것을 잊지 않으면 이 클래스는 제대로 실행될 겁니다.


JAVA에서 코드를 IDE에서 사용하는 것이 더 쉽습니다. 다음 두 섹션에서 설명합니다.

Eclipse에서 실행하기

Eclipse IDE를 사용하여  configuration 화면에서 환경변수를 설정할 수 있습니다. 그것을 하려면 play 버튼의 옆에 있는 작은 화살표를 클릭하고 Run Configurations...를 선택합니다.


일단 그곳에서 Environment 탭을 선택하고 New 버튼을 사용하여 GDAL_DATA와 LD_LIBRARY_PATH를 추가합니다.



NetBeans에서 실행하기

필자는 NetBeans에서 LD_LIBRARY_PATH GDAL_DATA 를 설정하는 그래픽적인 해결책을 찾지 못했습니다.

다음의 환경 변수를 설정하려면 netbeans.conf 파일(필자의 경우, /usr/local/netbeans-7.0.1/etc/  경로에 위치하였음)을 열어서 파일의 마지막 부근에 다음 라인들을 추가하세요.

Apache Tomcat에서 실행하기

만약 당신이 Apache Tomcat을 사용하여 GDAL과 함께 GIS 파일을 읽어서 웹페이지를 서비스하려 한다면 좋은 아이디어입니다.

다른사례와 같이 이 환경변수들을 반스시 설정해 주어야합니다.

/tomcat의 경로/bin/catalina.sh (당신의 설치 경로에 따라 바뀔수도 있음)를 열어서 NetBeans와 같이 다음 라인을 추가하세요.

라이브러리는 반드시 shared libraries 로서 설치되어 있어야하며 두개의 인스턴스를 생성하는 경우 충돌합니다. (a java.lang.UnsatisfiedLinkError will be launched).

  • 디렉터리를 생성: $CATALINA_HOME/shared/lib
  • (gdal.jar파일을 포함하는) gdal_home/swig/java의 내용들을 이 경로로 복사
  • catalina.properties를 편집하여 shared.loader 변수를 다음과 같이 변경

shared.loader=${catalina.home}/shared/lib/gdal.jar

Maven 사용

(적어도 필자가 아는 한) gdal.jar 는 Maven repositories에 없다. 따라서 반드시 수동적으로 추가를 해줘아햔다. gdal이 특정경로의 Tomcat에서 사용되는  maven의 것과는 다른.

따라서 pom.xml 파일은 gdal 섹션이 다음과 같이 수정되어어야 한다:




클래스 예제

GDAL 자바클래스를 실행하는 방법을 확인하려는 경우, 이 예제를 사용할 수 있습니다.

이 클래스는 매개변수로 전달된 GIS파일의 밴드의 개수를 출력합니다:


----

원본: http://geoexamples.blogspot.kr/2012/05/running-gdal-java.html

번역: kladess

댓글()

WindowServer에 PostGIS 설치 및 설정 하기

DBMS/PostGIS|2015. 9. 13. 21:57

[수정중]

참고 PostGIS 설치 및 환경 설정은 Windowserver2008기준으로 작성하였습니다.

PostGIS란?


1. PostGIS 설치 

1)먼저 윈도우용 PostgresSQL 을 다운 받습니다.

파일을 실행 합니다.


파일 실행시 POSTGIS 상징인 코끼리 모양이 나오는군요..ㅋㅋ

2) PostGIS 설치할 폴더를 지정해줍니다.

3) DB파일이 저장될 폴더를 설정합니다.

4)최고 관리자의 암호를 설정합니다. (간혹 암호를 설정한이후에 잊어버리는 경우 있기 때문에 꼭 메모합시다.)

5) 사용할 포트를 정합니다. (기본으로 설정된 포트는 5432 이지만 사용자가 편의에 맞게 원하는 포트로 설정하셔도 됩니다.)

Local에서 사용하실거라면 의미없지만 저와 같이 서버단에서 설치하실꺼라면 중요합니다.


6) local을 설정한후 Next 합니다.


7) Next를 클리하시면 설치 와 합께 완료 됩니다. 


여기까지는 기본적인 Postgres 설치가 완료 되었으며 


다음번에는 PostGIS 플러그인 추가 및 Postgres를 외부에서 접속 할 수 있도록 설정 해주는 부분에 대해서 설명하겠습니다 ..^^ 

댓글()