반응형

Ajax 사용 시 Url 값을 맞게 매치시켰음에도

404 에러가 뜨는 경우

 

 

컨트롤러의

@RequestMapping(value="/url")

바로 아래에

@ResponseBody

를 한줄 추가해주시면 됩니다.

 

 

반응형
반응형

Controller에서 보낸 변수를 Jstl로 자바스크립트에서 가져오는 방법은 크게 두가지가 있습니다.

 

var searchItem='<c:out value="${searchItem}"/>'

var searchItem2=${searchItem}

 

입니다.

 

두 변수를 각각 콘솔로 찍어보면

콘솔창에는 이렇게 표시가 됩니다.

 

소스탭에서 보면

 

이렇게 나오네요

1의 방법은 value 값을 문자열로 받아오겠다는 의미이고

2의 방법은 Html Object 그 자체로 받아오겠다는 의미가 됩니다.

 

따라서 만약 자바스크립트에서 저 value 의 값을 사용하려면

1은 변수에 value 값이 담기기 때문에 그대로 사용하시면 되지만

2 Object 이기 때문에 searchItem.value 의 방법으로 사용하셔야 합니다.

콘솔로 찍어보면

 

 

 

이렇게 나오는걸 확인할 수 있습니다.

 

반응형
반응형

메이븐 프로젝트 코딩을 하던 중

 

여러개의 변수를 Map 에 담아

Mybatis Sqlmapper 를 이용하여

쿼리를 날려야 하는 작업이 있었습니다.

 

맵에 담긴 여러 변수 중

일부는 테이블 이름 혹은 컬럼 이름으로 매핑되고

일부는 WHERE 조건절 등의 변수로 사용해야하는데

일반적으로 사용하는 #{변수명} 으로 파라미터를 받아왔더니

 

Bad SQL 에러가 뜨는 것이었습니다.

 

한참을 헤메고 고민하다가 결국 선임개발자에게 질문을 했는데

너무나 명쾌하게 고민을 해결해주셔서

혹시나 같은 고민을 하시는 분들이 계실까봐

이렇게 포스팅을 하게 되었습니다.

 

Dao 에서 전달한 파라미터를

sqlmapper에서 받아오는 방법은

크게

${변수명}

#{변수명}

으로 나뉩니다.

 

$ 은 한마디로 말하면 상수값

즉 쿼리를 날릴 때 ' ' 에 들어가지 않는 값이고

# 은 변수값 즉 ' ' 안에 들어가는 값을 받아와서 자동으로 매핑시켜 줍니다.

 

예를 들어 보겠습니다.

 

PEOPLE

NAME AGE ADDRESS PHONE
홍길동 402 조선 019-123-4567
지엔키 99 비밀 010-1234-5678
아이유 27 서울 010-8765-4321

이런 테이블이 있을 때

 

이름이 '지엔키' 인 사람의 주소를 가져오려면

 

SELECT ADDRESS FROM PEOPLE WHERE NAME='지엔키';

 

가 되겠죠?

 

이 때

 

SQLMapper 에

 

SELECT ${columnName} FROM PEOPLE WHERE NAME=#{name}

 

이렇게 설정 을 해주면

sqlmapper 가 자동으로

$ 가 붙은 컬럼이름, 즉 상수에는 ' ' 를 붙이지 않고

# 가 붙은 변수 에는 ' ' 를 붙여 쿼리를 날리게 된다는 겁니다.

 

굉장히 간단하지만 꼭 필요한 걸

이제라도 알게되어서

혹시나 필요한 분들에게 도움이 되셨기를 바랍니다.

반응형
반응형

table fruit

id data
과일 사과|배|복숭아|포도|수박

이런 데이터가 있다고 가정할 때

 

 

SELECT

split_part(data, '|', 1)

FROM fruit where id='과일';

사과

 

SELECT

string_to_array(data, '|')

FROM fruit where id='과일';

{사과,배,복숭아,포도,수박}

 

SELECT

unnest(string_to_array(data, '|')) 

FROM fruit where id='과일';

사과
복숭아
포도
수박

 

이렇게 가져올 수 있습니다.

반응형
반응형

리눅스 아파치 톰캣 설치,매니저 및 외부접속 설정, 지오서버 설치

1. wget http://mirror.navercorp.com/apache/tomcat/tomcat-8/v8.5.41/bin/apache-tomcat-8.5.41.tar.gz

2. tar -zxvf apache-tomcat-8.5.41.tar.gz 

3. cd apache-tomcat-8.5.41/

4. cd conf

5. vi server.xml

6.       <Connector port="사용할포트" protocol="HTTP/1.1"

            connectionTimeout="20000"
               redirectPort="8443" 
                address="0.0.0.0"
                useIPVHosts="true" />  
위와같이 수정

7. vi tomcat-users.xml

8.

<role rolename="manager-gui"/>

<role rolename="manager-script"/>

<role rolename="manager-status"/>

<user username="아이디" password="비밀번호" roles="manager-gui,manager-script,manager-status"/>
추가

9. vi /var/lib/postgresql/apache-tomcat-8.5.41/conf/Catalina/localhost/manager.xml 
로 없으면 파일 생성 있으면 수정

<Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager">

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />

</Context>

 추가

10. cd /var/lib/postgresql/apache-tomcat-8.5.41/bin

11. ./startup.sh
로 서버 실행 후
인터넷 접속 브라우저로
http://hostaddr:port
로 톰캣 접속 되는지 확인

12. ./shutdown.sh
로 서버 종료

13. wget http://sourceforge.net/projects/geoserver/files/GeoServer/2.15.1/geoserver-2.15.1-war.zip

14. unzip geoserver-2.15.1-war.zip 

15. cp geoserver.war /var/lib/postgresql/apache-tomcat-8.5.41/webapps

16. cd /var/lib/postgresql/apache-tomcat-8.5.41/bin

17. ./startup.sh

18. 인터넷 접속 브라우저로
http://hostaddr:port/manager/html
로 접속하여 8번의 role 에 설정한 아이디 비밀번호 입력 후 로그인하여
war file to deploy항목에서 geoserver.war파일 선택 후 deploy버튼 클릭하여 배포를 완료하면 Applications 항목에 /geoserver를 확인

19. http://hostaddr:port/geoserver 
로 접속 되는지 확인

20. id : admin
    passwd : geoserver
로 접속 되는지 확인



참고한 페이지

https://elfinlas.tistory.com/369

https://zipeya.tistory.com/entry/GeoServer-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0

http://blog.naver.com/PostView.nhn?blogId=ses1030&logNo=220823127740

https://bigpicture25.tistory.com/7

반응형
반응형

시작은 root 계정에서 시작하였습니다.

명령어들만 쭉 적었으니 잘 참고하시기 바랍니다.

 

1. echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list

2. wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

3. sudo apt-get update

4. sudo apt-get install postgresql-11

5. sudo apt-get install pgadmin4

6. sudo apt-get install postgis

(Postgresql 을 설치하고 나면 관리자 계정 postgres 가 생성됨
이후로는 sudo su  - postgres 로 postgres 계정에서 진행)

7. psql

8. create extension postgis;

9. \q

(외부접속 허용 설정 https://moomini.tistory.com/90 참고)
10. sudo vi /etc/postgresql/11/main/postgresql.conf

11. #listen_address = 'localhost'  ->  listen_address = '*' 로 수정 후 저장 (앞에 # 지워야함)

12. sudo vi /etc/postgresql/11/main/pg_hba.conf

13. 맨 아래 #Allow replication connections from localhost, by  a user with the replication privilege 로 시작하는 부분 맨 아래에
host all all 0.0.0.0/0 md5
    추가

14. wget https://github.com/EnterpriseDB/mysql_fdw/archive/master.zip

15. unzip master.zip

16. cd mysql_fdw-master/

17. sudo apt-get install libpq-dev

18. sudo apt-get install mysql-client libmysqlclient-dev

19. sudo apt-get install libpq-dev postgresql-server-dev-11

20. make USE_PGXS=1

21. sudo make USE_PGXS=1 install

22. psql

23. create extension mysql_fdw;

24. CREATE SERVER mysql_server     
FOREIGN DATA WRAPPER mysql_fdw     
OPTIONS (host 'hostaddr', port '3306');

25. CREATE USER MAPPING FOR postgres
SERVER mysql_server
OPTIONS (username 'userid', password 'password1!'); //해당 DB 접속 가능한 아이디 비밀번호를 입력해야 함

26. IMPORT FOREIGN SCHEMA db_name FROM SERVER mysql_server INTO public;

------------------------------여기까지 작업 후 pgadmin4 으로 외부스키마 데이터 확인 -----------------------

mysql_fdw 예제
https://www.percona.com/blog/2018/08/24/postgresql-accessing-mysql-as-a-data-source-using-mysql_fdw/

참고자료
https://zetawiki.com/wiki/%EC%9A%B0%EB%B6%84%ED%88%AC_PostgreSQL_%EC%84%A4%EC%B9%98

반응형
반응형

Postgresql 을 ubuntu 에서

apt-get이 아닌 binary 로 직접 설치하려고

 

https://www.postgresdba.com/bbs/board.php?bo_table=C05&wr_id=26

 

커뮤니티 > 나만의 강좌및 팁 > 디비랑-6) PostgreSQL Binary/수동 설치 - All About PostgreSQL

## ## CentOS 6.4, PostgreSQL 9.2.4 community ## ## 1. PostgreSQL 다운로드     ㅇ http://www.postgresql.org/ftp/source 에서 확인. root# cd /usr/local/src root# wget http://ftp.postgresql.org/pub/source/v9.2.4/postgresql-9.2.4.tar.gz root# tar zxvf postgresql-9.2.4.t

www.postgresdba.com

이 블로그를 참조하여 설치를 하던 중

make check 를 하는 부분에서

이런 에러가 났습니다.

 

인터넷을 아무리 뒤져도 해결방법이 나오지 않아서

로그 파일을 찾아보니

이렇게 initdb는  postgres 계정만 실행할 수 있기 때문에 에러가 발생한 것을 알 수 있었습니다.

 

그래서

su - postgres

로 접속하여 다시 

make check

를 실행해보니

파일을 생성할 수 있는 권한이 없어서

Permission Denied

에러가 발생하였습니다.

 

그래서 다시 root 계정으로 돌아와서

chown -fR postgres:postgres ./*

로 postgres 계정에 읽고 쓸 수 있는 권한을 부여하니

오류가 해결되었습니다.

반응형
반응형

회사에서 최근 GIS 와 관련된 프로젝트를 맡게 되어서

공부를 하며 정리한 내용들을 포스팅 해볼까 합니다.

 

철저하게 개발자적 관점에서 GIS에 대해 아무것도 모르던 상태에서 공부한 것들이기 때문에

많은 오류가 있을수도 있으니 철저하게 지적해주시면 감사하겠습니다.

(이후로는 개인적으로 정리한 것이기 때문에 ~다 체를 사용하였으니 양해부탁드립니다... (-.-) (_ _) (-.-) 꾸벅)

 


우선 GIS는 기본적으로 공간데이터와 속성데이터로 이루어졌다.

지구상의 한 점의 위도, 경도값을 이용하여 POINT 를 만들고,

POINT 들이 모여 LINE 을 만들고,

LINE 들이 모여 POLYGON 을 만든다.

 

그리고 저 공간에 예를들면 고도는 얼마인지, 온도는 얼마인지, 지역 이름이 뭔지 같은 데이터들이 속성데이터들이다.

그리고 그 데이터들은 대부분 데이터베이스에 테이블로 관리된다.

위도

경도

이름

고도

온도

시간

37.5651171

126.9814028

서울시청

5m

20

20190517

이런식으로 관리되고

저 위의 테이블에서 위도 경도값이 공간데이터, 나머지들이 속성데이터이다.

물론 저 위도, 경도 값만으로는 개발을 할 수 없기 때문에 저 값을 다시 공간데이터로 바꾸어야 하지만

추후 다시 얘기하도록 하고 우선은 넘어가도록 하자..

 

공간데이터는 다시 크게 두 종류로 나누어 지는데

Vector 데이터와 Raster 데이터다.

벡터 데이터는 위도, 경도 절대좌표값 등을 이용하여 점,,면의 정보를 저장하는 방식이고,

래스터데이터는 격자(cell)로 이루어진 데이터로 항공영상, 위성영상 등의 정보를 표현하는데 용이하다.

 

벡터와 래스터의 예

 

공간데이터에서 가장 중요한 파일 포맷 중 하나가 .shp 라는 파일 포맷으로 된 SHAPEFILE 이다.

쉐이프 파일은 ESRI 사에서 개발한 GIS 프로그램에 사용되는 표준 포맷 파일이다. 거의 세계 공통으로 쓰이며 지리현상에 대한 기하학적 위차와 속성정보를 저장, 제공해주는 데이터 포맷이다.

보통 3~5 개의 파일묶음으로 구성되어 있으며 각각의 역할은

 

       .shp : 지리 사상의 기하학 정보를 저장

 

       .shx : 지리 사상의 기하학 정보의 인덱스를 저장(shp파일의 인덱스)

 

       .dbf : 지리 사상의 속성 정보를 제공하는 dBASE 파일(table)

 

       .prj : 좌표계의 정보가 담겨있음. 따라서 prj 파일이 없는 경우 별도로 좌표계를 지정해줘야함

 

       .qpj : prj 파일과 연동된 파일로 Qgis에서 쉐이프 파일을 활용할 때 필요하다. Qgis에서 prj 파일을 호출할 때

       좌표계를 혼동하는 오류가 발생해 이를 보완하는 역할

 

 

등의 역할을 한다. 이 중 prj와 qpj 는 생략되어있기도 하다.

 


내가 가지고 있는 위치정보를 서비스하기 위해선

위와 같은 과정이 필요하다.

우선 본인이 가지고 있는 공간데이터들을 Postgresql 이라는 데이터베이스에 저장한다.

MYSql 이나 오라클처럼 잘 알려진 데이터베이스를 놔두고 굳이 Postgresql 을 사용하는 이유는

바로 공간데이터에 관련된 함수를 가장 잘 제공하기 때문이다.

Postgresql 은 자체적으로 Postgis 라는 확장 프로그램을 제공하는데

Postgis 에서 공간데이터로처리할 수 있는 거의 모든 함수를 기본적으로 제공하기 때문에

다른 DB들보다 GIS를 서비스하기에 유용하다.

MYSql 도 자체적으로 공간함수를 제공하지만 직접 사용해본 결과

Postgresql 에 비해서 현저히 떨어진다.

게다가 Postgresql shp 파일도 바로 임포트 시킬 수 있다.

 

이렇게 Postgresql 에 저장된 데이터들을 개인적으로 내 로컬PC에서 다루고 가공하고 싶다면

QGIS 혹은 uDig 라는 툴을 사용하면 된다.

QGIS 밖에 사용을 해보지 않았기 때문에

만약 추후 포스팅을 하더라도 QGIS 위주로 포스팅을 하게될 것 같다.

QGIS 에서는 Postgresql 뿐만 아니라 다른 DB에 저장되어 있는 공간데이터들을 쉽게 불러올 수 있고

직관적으로 지도 위에 표시해주는데에 용이하다.

때문에 내가 가지고 있는 자료들을 개인적으로 시각화하여 다루고싶다면

QGIS 라는 툴을 사용하면 된다.

 

만약 공간데이터를 웹에 서비스 하고 싶다면

Postgis 에서 Geoserver 라는 서버를 거쳐 OpenLayers 라는 스크립트 라이브러리를 통해

웹브라우저에 표시하면 된다.

 

Geoserver는 지리공간데이터를 공유하고 편집할 수 있는 Java로 개발된 오픈소스 GIS 소프트웨어 서버로

상호운용성을 전제로 개발되었기 때문에, 개방형 표준을 사용하여 다양한 공간 데이터 소스를 서비스할 수 있다.

 

OpenLayers 는 자바스크립트 라이브러리의 일종으로

Geoserver 를 통해 생성된 레이어를 스크립트 언어를 이용하여 시각적으로 가공하여 웹 상에 표시할 수 있다. OpenLayers 의 장점은 우선 오픈소스이기 때문에

다양한 지도 (Google Maps, OSM, Bing Maps) 서비스들과 호환이 잘 되고

거의 모든 OGC(Open Geospatial Consortium) 표준을 지원하여 사용이 가능하다.

 OGC 표준을 간단하게 정리하면

 

   Web Map Service(WMS)

 - GIS 데이터에 접근하기 위한 인터페이스로써 웹을 통해 지도 이미지(형식)로 서비스함. 다시 말해, 데이터서버에 저장된 레이어 또는 분석을 통해 생성된 벡터 및 래스터 데이터를 시각화 하는 서비스

 

   Web Feature Service(WFS)

- 웹을 통해 벡터형식으로 GIS 데이터를 제공하기 위한 인터페이스로, 데이터서버에 저장된 벡터 레이어를 공간 및 속성조건을 이용해서 불러오거나 관리(피쳐의 추가, 수정, 삭제) 하기 위한 서비스

 

   Web Coverage Service(WCS)

-  웹을 통해 래스터 형식을 GIS 데이터를 제공하기 위한 인터페이스, 위성영상 등과 같은 자료를 서비스

   

-  Web Processing Service(WPS)

- 지리정보에 대한 다양한 처리 서비스(Geo-Processing Service)를 웹상에서 정의하고 접근할 수 있도록 하기 위한 인터페이스, 모든 OGC 표준 웹 서비스들과 상호호환성을 갖도록 정의

 

가 되겠다.

 

여기까지가 내가 이해한 GIS 의 개념적인 이해이다.

 

마지막으로 GIS 와 관련해서 정보를 얻기 좋은 사이트들은

 

http://www.gisdeveloper.co.kr/

https://www.slideshare.net/lenablue1212/postgis-37751544

https://www.slideshare.net/jinifor/5open-layers

https://www.slideshare.net/kimseonggeon/geoserver-30424128

https://www.spacein.kr/main/index.do

https://openlayers.org/en/latest/examples/

http://www.biz-gis.com/

 

등이 있다.

반응형

+ Recent posts