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/










댓글()

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

댓글()