안드로이드 앱은 핸드폰의 제한된 공간에서 작동 되는데 앱 외부에 있는 리소스(카메라, SMS, 저장공간 등)에 접속 하기 위해서는 핸드폰 소유자의 접근 허가 권한을 받아야 이용이 가능 합니다물론 Android 5.1(API 수준 22) 이하에서 실행하는 기기에 설치된 앱 이라면 권한이 설정 만으로도 자동으로 부여되므로 허가 요청은 필요하지 않습니다.

권한을 요청하는 순서대로 설명을 하면

 

1. 권한 설정

 

앱에서 필요한 권한을 AndroidManifest.xml 파일에 등록을 해야 합니다문법은

<uses-permission android:name="string" android:maxSdkVersion="integer" />

과 같이 작성 합니다.

Parameters

android:name

요청하려는 권한의 이름.

android:maxSdkVersion

권한이 필요한 최고 레벨 값. (“21” 이라면 API 레벨 21까지만 필요하고 22 이상은 필요 없다는 의미)

 

실제 사용 예를 들면 아래처럼 입력하면 됩니다.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />


권한의 종류는 안드로이드 사이트에 리스트 되어 있으며 양이 많아 링크만 연결해 드립니다.

https://developer.android.com/reference/android/Manifest.permission

 

 

2. 앱에 이미 권한이 부여되었는지 확인


사용하려는 권한을 이미 부여 받았다면 권한 요청을 다시 하지는 않습니다.

ContextCompat.checkSelfPermission() 메서드를 사용하여 앱에 이미 권한을 부여 받았는지 확인을 할 수 있습니다호출 결과로는 PERMISSION_GRANTED 또는 PERMISSION_DENIED를 반환 받게 됩니다.


public static int checkSelfPermission (Context context, String permission)


Parameters

context

Context

permission

String : 필요한 권한 명칭

 

Returns

int

PackageManager.PERMISSION_GRANTED - 이미 권한이 있는 경우

PackageManager.PERMISSION_DENIED – 권한이 없는 경우

 

실제 사용 예는 아래와 같습니다.

ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION);

 

 

3. 앱에 권한이 필요한 이유 설명

 

앱에 필요한 권한을 요청 하려는 경우 사용자가 처음 권한을 요청 받은건지 기존에 요청을 받았는데 거부를 한 것인지에 따라 요청 방식을 달리 해야 하고 요청 화면도 달라지게 됩니다.


shouldShowRequestPermissionRationale() 메서드는 사용자가 이전에 권한 요청을 거부한 경우 true 값을 넘겨주게 되어 있습니다그 결과를 이용하여 앱을 사용하려면 권한이 필요함을 사용자에게 알려 주는 안내를 추가 해야 합니다.


public static boolean shouldShowRequestPermissionRationale (Activity activity, String permission)

 

Parameters

activity

Activity: The target activity.

permission

String : 필요한 권한 명칭

 

Returns

boolean

Whether you should show permission rationale UI.

 

if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION)) {

  // 이전에 거부한 경우 권한 필요성 설명 및 권한 요청

} else {

  // 처음 요청하는 경우 그냥 권한 요청

}

 

 

 

4. 권한요청

 

권한 요청은 메소드를 호출 하면서 필요한 권한을 적어주면 됩니다요청 하려는 권한이 한개 이상이면 String 배열에 죽 기입해 주면 되고 너무 많으면 배열을 별도로 작성해서 추가해도 됩니다.


static void requestPermissions(Activity activity, String[] permissions, int requestCode)

 

Parameters

Activity

Activity

permissions

String[p] : 필요한 권한 명칭들

requestCode

실행 후 전달 받을 코드

 

requestCode는 개발자가 임의로 만들어 놓은 코드를 말하고 메소드가 void를 리턴하는데 전달받으려는 값을 설정 한다는 건 메소드 실행 후 onRequestPermissionsResult() 메소드를 이용하여 결과 값을 넘겨 주게 됩니다.

 

- 요청 권한이 한개인 경우


static final int PERMISSIONS_REQUEST_READ_LOCATION = 0x00000001;

 

ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION},

                        PERMISSIONS_REQUEST_READ_LOCATION);

 

- 요청 권한이 2개 이상인 경우


static final int PERMISSIONS_REQUEST_READ_LOCATION = 0x00000001;

private String[] PERMISSIONS = {

    Manifest.permission.ACCESS_COARSE_LOCATION,

    Manifest.permission.ACCESS_FINE_LOCATION

};

ActivityCompat.requestPermissions(this,PERMISSIONS,PERMISSIONS_REQUEST_READ_LOCATION);

 

 

 

5. 권한요청 응답처리

 

사용자가 권한 요청 대화상자에 응답하면 시스템은 앱의 onRequestPermissionsResult() 메소드를 호출 하게 되고 이곳에서 결과에 대한 다음 작업을 진행하게 됩니다.

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

    switch(requestCode) {

        case returnCode:

            if (grantResults.length > 0

                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                 // 권한 허가된 경우 처리

             } else {

                // 권한 거절된 경우 처리

            }

            break;

}

}

 

 

6. 테스트 프로젝트

 

간단한 권한 요청만 진행하는 프로젝트를 하나 생성해 봅니다.


android permission




android permission



 

프로젝트를 생성하고 소스를 입력 합니다.

실제 사용되는 파일은 2개이고 전체 소스 입니다.

 

- AndroidManifest.xml

 

<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
   
package="copycoding.tistory.permissiontest">

    <uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application
       
android:allowBackup="true"
        
android:icon="@mipmap/ic_launcher"
       
android:label="@string/app_name"
       
android:roundIcon="@mipmap/ic_launcher_round"
       
android:supportsRtl="true"
       
android:theme="@style/AppTheme">
        <activity
android:name=".MainActivity">
            <intent-filter>
                <action
android:name="android.intent.action.MAIN" />

                <category
android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

 

- MainActivity.java

 

package copycoding.tistory.permissiontest;

import
androidx.annotation.NonNull;
import
androidx.appcompat.app.AppCompatActivity;
import
androidx.core.app.ActivityCompat;
import
android.Manifest;
import
android.content.pm.PackageManager;
import
android.os.Bundle;
import
android.widget.Toast;

public class
MainActivity extends AppCompatActivity {

   
int nCurrentPermission = 0;
    static final int
PERMISSIONS_REQUEST = 0x0000001;

   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
       
setContentView(R.layout.activity_main);
       
OnCheckPermission();
   
}
   
public void OnCheckPermission() {
       
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
               
|| ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
           
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION)) {
                Toast.makeText(
this, "앱 실행을 위해서는 권한을 설정해야 합니다", Toast.LENGTH_LONG).show();
               
ActivityCompat.requestPermissions(this,
                        new
String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION},
                       
PERMISSIONS_REQUEST);
           
} else {
                ActivityCompat.requestPermissions(
this,
                        new
String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION},
                       
PERMISSIONS_REQUEST);
          
}
        }
    }

   
@Override
   
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
       
switch (requestCode) {
           
case PERMISSIONS_REQUEST :
               
if (grantResults.length > 0
                       
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    Toast.makeText(
this, "앱 실행을 위한 권한이 설정 되었습니다", Toast.LENGTH_LONG).show();
               
} else {
                    Toast.makeText(
this, "앱 실행을 위한 권한이 취소 되었습니다", Toast.LENGTH_LONG).show();
               
}
               
break;
       
}
    }
}

 

 

7. 결과 화면

 

- 처음 권한 요청


android permission



처음 권한을 요청하면 위 그림과 같이 [거부][허용] 버튼이 나타 납니다.

여기에서 거부를 클릭 했습니다.

 

- 거부 후 다시 실행시


android permission


이번에는 [다시묻지않음]이 추가된 요청 화면이 나타 납니다.


- copy coding -



집 안으로 거북이 들어오거나 우물 속으로 들어가는 꿈 해몽

 -> 가업이 번성하고 지위와 명예가 높아져 많은 사람의 부러움을 사게 된다.


거북이가 자기 집 우물 속에 들어와 있는 꿈 해몽

 -> 재물이 많이 생기고, 큰 부자가 되어서 가문을 부흥시킬 꿈이다.


거북이를 때려서 피가 흐르는 꿈 해몽

 -> 조력자가 생겨서 하던 일이 성공을 거두게 된다.


거북이를 만지거나 등에 타는 꿈 해몽

 -> 장차 권력과 재물을 획득하게 될 큰 인물을 낳을 태몽이다.


거북이를 잡아먹는 꿈 해몽

 -> 초상이나 우환·근심 걱정 손재 등 아주 불행한 사고가 곧 발생한다.


거북이를 잡으려 하지만 잡지 못하는 꿈 해몽

 -> 많은 노력을 하지만 결과는 좋지 않다는 것을 암시하고 있다.


거북이를 쫓다가 잡지 못한 꿈 해몽

 -> 치밀한 계획을 세우지만 뜻대로 성사되지 않는다.


거북이 꿈 해몽 모음



거북이를 다치게 하여 피를 흘리는 꿈 해몽

 -> 사업이 크게 성공하여 큰 돈을 벌어서 부자가 된다.


거북이를 죽이는 꿈 해몽

 -> 추진하던 일의 장애물이 모두 없어져서 순조롭게 일이 풀려갈 징조이다.


거북이의 목을 잡는 꿈 해몽

 -> 본인의 세력을 확대하거나 매사에 주도권을 잡을 것이다.


거북이의 목을 잡고 있는 꿈 해몽

 -> 조직의 주도권을 잡거나, 시험에서 수석으로 합격하는 것을 암시한다.


거북이 기어가는 꿈 해몽

 -> 사업이 번창하고 재산이 늘어나며, 이성간에는 사랑이 맺어지는 길몽이다.


거북이가 한가롭게 노는 것을 보는 꿈 해몽

 -> 사업이 번창하고 집안이 영화를 누리게 될 징조이다.


거북이 몸통 속으로 목을 집어넣는 꿈 해몽

 -> 부탁한 일이나 원하던 일이 생각대로 성취되지 않아서 고통스럽게 된다.


거북이 앞장서서 길을 인도하는 꿈 해몽

 -> 귀인이 나타나서 인도해 주고 도와주어 크게 성공할 징조가 보인다.


거북이가 뱃길을 인도하는 꿈 해몽

 -> 추진하는 일이 방해없이 순탄하게 성공에 도달하게 된다.


거북이가 거처하고 있는 곳에 들어가는 꿈 해몽

 -> 예상 밖으로 부귀영화를 누린다.


자라가 거북이로 변해서 옆에 있는 꿈 해몽

 -> 적은 밑천으로 큰 소득을 얻는다.


자라를 보는 꿈 해몽

 -> 관직을 얻는 기쁨을 맛보게 된다.


물 속에 빠졌다가 자라 또는 거북이 도와 주어 살아나는 꿈 해몽

 -> 우연한 기회에 조력자의 도움을 받게 되고, 사업이 발전하여 번창할 것이다.


- copy coding -



Android 프로그램을 하면서 사용할 일은 거의 없지 찾으려면 구글링을 해야 해서 한번에 모아 놓고 참조하기 위해 정리를 해 보았습니다.

 

플랫폼 버전 별 API 레벨

 

플랫폼 버전

API 레벨

플랫폼 명

버전 코드

Android 10.0

29

Q

Q

Android 9

28

Pie

P

Android 8.1

27

Oreo

O_MR1

Android 8.0

26

Oreo

O

Android 7.1.1

Android 7.1

25

Nougat

N_MR1

Android 7.0

24

Nougat

N

Android 6.0

23

Marshmallow

M

Android 5.1

22

Lollipop

LOLLIPOP_MR1

Android 5.0

21

Lollipop

LOLLIPOP

Android 4.4W

20

KitKat Wear

KITKAT_WATCH

Android 4.4

19

KitKat

KITKAT

Android 4.3

18

Jelly Bean

JELLY_BEAN_MR2

Android 4.2

Android 4.2.2

17

Jelly Bean

JELLY_BEAN_MR1

Android 4.1

Android 4.1.1

16

Jelly Bean

JELLY_BEAN

Android 4.0.3

Android 4.0.4

15

IceCreamSandwich

ICE_CREAM_SANDWICH_MR1

Android 4.0

Android 4.0.1

Android 4.0.2

14

IceCreamSandwich

ICE_CREAM_SANDWICH

Android 3.2

13

Honeycomb

HONEYCOMB_MR2

Android 3.1.x

12

Honeycomb

HONEYCOMB_MR1

Android 3.0.x

11

Honeycomb

HONEYCOMB

Android 2.3.4

Android 2.3.3

10

Gingerbread

GINGERBREAD_MR1

Android 2.3.2

Android 2.3.1

Android 2.3

9

Gingerbread

GINGERBREAD

Android 2.2.x

8

Froyo

FROYO

Android 2.1.x

7

Eclair

ECLAIR_MR1

Android 2.0.1

6

Eclair

ECLAIR_0_1

Android 2.0

5

Eclair

ECLAIR

Android 1.6

4

Donut

DONUT

Android 1.5

3

Cupcake

CUPCAKE

Android 1.1

2

Base

BASE_1_1

Android 1.0

1

Base

BASE

 

프로그램에서 플랫폼 버전 별 작업을 해야 한다면 실제로 사용할 수 있는 값은 API 레벨과 버전 코드를 사용하여 조건문을 생성하여 사용하면 됩니다.

안드로이드 프로그램 내에서 현재 사용하는 단말기의 VersionBuild.VERSION.SDK_INT를 이용하여 구하면 되고 비교 값으로는 API 레벨을 사용 하거나 버전 코드는 Build.VERSION_CODES.[버전 코드]를 이용하여 API 레벨 상수 값을 구할 수 있습니다.


- API 레벨을 사용하는 경우


 if(Build.VERSION.SDK_INT >= 23){

    // 필요한 코딩 작업

}


- 버전 코드를 사용하는 경우


if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){

    // 필요한 코딩 작업

}


 

안드로이드 단말기의 버전은 Build.VERSION.SDK_INT을 이용하여 얻을 수 있었는데 좀더 상세한 값들도 구할 수 있습니다.

  

Return Type

Code

Description

String

BASE_OS

The base OS build the product is based on.

String

CODENAME

The current development codename, or the string "REL" if this is a release build.

String

INCREMENTAL

The internal value used by the underlying source control to represent this build.

String

PREVIEW_SDK_INT

The developer preview revision of a prerelease SDK.

String

RELEASE

The user-visible version string.

String

RELEASE_OR_CODENAME

The version string we show to the user; may be RELEASE or CODENAME if not a final release build.

String

SDK

This field was deprecated in API level 15. Use SDK_INT to easily get this as an integer.

String

SDK_INT

The SDK version of the software currently running on this hardware device.

String

SECURITY_PATCH

The user-visible security patch level.

 

실제 프로그램에서 Code를 사용 하려면 Build.VERSION.[Code]와 같이 이용하면 됩니다간단하게 프로그램을 만들어서 출력을 하는 프로그램을 만들어 보면


 

public class MainActivity extends AppCompatActivity {

   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
       
setContentView(R.layout.activity_main);

       
TextView textView = (TextView) findViewById(R.id.version);
       
StringBuffer sBuffer = new StringBuffer();
        if
(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            sBuffer.append(
"Build.VERSION.BASE_OS = " + Build.VERSION.BASE_OS);
           
Log.v("myDevice","Build.VERSION.BASE_OS = " + Build.VERSION.BASE_OS);
       
}
        Log.v(
"myDevice","Build.VERSION.CODENAME = " + Build.VERSION.CODENAME);
       
Log.v("myDevice","Build.VERSION.INCREMENTAL = " + Build.VERSION.INCREMENTAL);
       
Log.v("myDevice","Build.VERSION.RELEASE = " + Build.VERSION.RELEASE);
       
Log.v("myDevice","Build.VERSION.SDK = " + Build.VERSION.SDK);
       
Log.v("myDevice","Build.VERSION.SDK_INT = " + Build.VERSION.SDK_INT);
       
sBuffer.append("\nBuild.VERSION.CODENAME = " + Build.VERSION.CODENAME);
       
sBuffer.append("\nBuild.VERSION.INCREMENTAL = " + Build.VERSION.INCREMENTAL);
       
sBuffer.append("\nBuild.VERSION.RELEASE = " + Build.VERSION.RELEASE);
       
sBuffer.append("\nBuild.VERSION.SDK = " + Build.VERSION.SDK);
       
sBuffer.append("\nBuild.VERSION.SDK_INT = " + Build.VERSION.SDK_INT);
        if
(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            sBuffer.append(
"\nBuild.VERSION.SECURITY_PATCH = " + Build.VERSION.SECURITY_PATCH);
           
Log.v("myDevice","Build.VERSION.SECURITY_PATCH = " + Build.VERSION.SECURITY_PATCH);
       
}
        textView.setText(sBuffer)
;
   
}
}

 

이런 식으로 코드를 작성 하고 실행하면


android version


이렇게 버전에 대한 상세내역을 얻을 수 있습니다.


- copy coding -



GeoServerJava로 개발된 오픈 소스로 GIS 지리공간 데이터를 편집하고 웹으로 서비스할 수 있는 서버 입니다지도 서비스에 관심은 있지만 구글, 네이버, 다음에서 제공하는 기능만을 사용하는 경우에는 그다지 유용하지 않을 수 있지는데 자신만의 데이터를 사용하여 새로운 기능을 추가하여 만들고 싶다면 한번쯤은 관심을 가져야 하는 프로그램 중 하나로 생각 됩니다.

GeoServer 설치는 간단히 살펴 보고 어떤 식으로 사용을 하는지 사용방법도 하나를 알아 보도록 하겠습니다.

 

1. GeoServer 다운로드


설치 파일을 다운로드 하기 위해 사이트에 접속 합니다.

http://geoserver.org/download/


geoserver install shapefile

둘 중 아무거나 설치해도 되는데 2.18.1 버전을 설치해 보겠습니다.  Stable쪽을 클릭해서 들어가면


geoserver install shapefile


예전 버전에는 Windows용 설치 파일이 별도로 있었는데 이제는 binary 파일로 제공을 하고 있습니다. War 버전도 있는데 Tomcat등 자신이 좋아하는 WAS를 이용하여 사용할 수 있습니다여기서는 binary 파일로 설치를 진행 합니다.

 

다운받은 파일(geoserver-2.18.1-bin.zip)의 압축을 풀어 줍니다저는 C:\에 압축을 풀었더니 폴더 명이 geoserver-2.18.1-bin 이렇데 되어 있는데 뒷부분을 삭제 하여 geoserver 이렇게 만들었습니다폴더를 열어보면 파일 구성을 볼 수 있습니다.


geoserver install shapefile


2. 설정 및 기동

 

geoserver 폴더에 있는 start.ini  RUNNING.txt 파일을 읽어보면 쉽게 사용이 가능 합니다.

먼저 Java가 설치 되어 있는지 확인을 하고 없다면 설치를 해야 합니다.  GeoServerjava로 만들어서 사용하려면 꼭 필요 합니다.


geoserver install shapefile


Oracle Java가 없다면 openjdk(http://openjdk.java.net/)를 설치해도 됩니다.

 

start.ini 파일에는 설정을 하는 내용이 있고 RUNNING.txt 파일은 설치 방법이 순서대로 적혀 있습니다.

 

대부분 기본 설정 값을 사용해도 되고 start.ini 파일에서 GeoServer를 사용할 Port를 변경 합니다디폴트로 8080으로 설정되어 있지만 이 8080을 탐내는 프로그램들이 많아서 대부분 다른 프로그램이 사용을 하고 있을 것이므로 충돌이 나지 않도록 저는 9999로 변경 하기로 했습니다. start.ini 파일을 열고


geoserver install shapefile


jetty.port=8080

이 부분을 찾아

jetty.port=9999

이렇게 수정하고 저장 했습니다다른 포트로 설정해도 됩니다.

 

그리고 JAVA_HOME


geoserver install shapefile


GEOSERVER_HOME도 설정해 줍니다.


geoserver install shapefile


Port 변경, JAVA_HOME, GEOSERVER_HOME 추가. 이렇게 3개만 작업하면 됩니다.

이제 사용을 해볼까요명령 프롬프트를 하나 열고 명령어를 입력해 실행 합니다.

 

C:\geoserver\bin\startup


geoserver install shapefile


GeoServer가 스타드 되었습니다확인을 위해 웹브라우저를 아무거나 하나 실행 해서 URL을 입력해 봅니다.

 

http://localhost:9999/geoserver/web/


geoserver install shapefile


마치 Tomcat을 설치하고 있는 기분이 드는데 요즘에는 이런 프로그램이 많아져서 편합니다.

 

3. 로그인 및 테스트

 

이제 login을 해봅니다.


geoserver install shapefile


초기 관리자 ID와 비밀번호는

admin/geoserver

입니다.


geoserver install shapefile


로그인을 하니 좌측에 메뉴들이 많아졌습니다데이터 항목의 첫번째에 있는 [레이어 미리보기]를 선택해 봅니다.


geoserver install shapefile


그러면 우측에 미리보기 용 레이어 리스트가 나오는데 여기에서 제목이 USA Population을 찾아서 공통 포맷 중 OpenLayers를 클릭해 봅니다.


geoserver install shapefile


이렇게 지도 데이터를 웹으로 제공이 가능합니다그럼 바로 이전 [레이어 미리보기]의 리스트로 돌아가서 이름 항목을 보면 [topp:states] 두개가 합쳐저 있는데 이것이 나타내는 건 [작업공간:저장소] 입니다좌측 메뉴에서 저장소를 선택해 보면 알 수 있습니다.


geoserver install shapefile


리스트에서 유형 항목을 보면 Shapefile로 되어 있는데 만일 어느 지역의 Shapefile을 가지고 있다면 GeoServer에 등록해서 웹으로 서비스가 가능하다는 말이 되므로 Shapefile은 인터넷에 널려 있으니 다운로드 받아서 한번 작업을 해 봅니다저장공간과 저장소 두가지를 만들어 shp 파일을 등록만 하면 레이어로 서비스가 되겠군요.

 

4. 신규 레이어 생성

 

- 작업공간 생성


작업공간을 생성 하기 위해 좌측에서 [작업공간] 메뉴를 선택 합니다.


geoserver install shapefile


[새로운 작업공간 추가하기]를 선택 합니다.


geoserver install shapefile


이름과 uri를 아무렇게나 입력하는데 나중에 찾아볼 수 있게는 해야 합니다.

[본 작업공간으로 설정하기]를 체크 하고 저장 버튼을 클릭 합니다.


geoserver install shapefile


저장이 되고 [작업공간] 리스트에 추가된걸 확인할 수 있습니다.

 

- 저장소 생성

 

이번에는 좌측 메뉴에서 [저장소]를 클릭 합니다.


geoserver install shapefile


동일한 방법으로 [새로운 저장소 생성하기]를 클릭하고


geoserver install shapefile


저장소 종류가 참 많은데 여기서는 Shapefile을 사용하기로 하였으니 벡터 데이터 저장소 항목 중

Shapefile ESRI(tm) Shapefiles (*.shp)

를 찾아서 클릭 합니다.


geoserver install shapefile


대충 입력할 항목을 채우고 shp 파일을 추가하기 위해 [탐색]을 클릭 합니다.


geoserver install shapefile


파일이 저장된 위치를 찾아 선택해 줍니다.


geoserver install shapefile


그러면 [새로운 레이어]에 추가가 된걸 확인할 수 있습니다이번에는 [동작] 항목에서 


발행하기


를 클릭 합니다.


geoserver install shapefile

geoserver install shapefile


공간 좌표계는 다운로그 받은 파일 중에 (입력하려는파일명).prj 이런 파일이 있으면 자동으로 입력이 되고 아니면 직접 입력 합니다.

레이어 최소 경계 영역은 [데이터로부터 계산하기]와 [원본 영역으로부터 계산하기] 글자를 클릭 해주면 자동으로 입력이 됩니다.

 

입력이 끝나면 [저장] 버튼을 클릭 합니다.


geoserver install shapefile


레이어에 추가가 되었습니다이렇게 레이어 생성이 완료가 되었습니다.

 

구경 한번 해봐야죠?  좌측메뉴 [레이어 미리보기]를 선택 하고


geoserver install shapefile


새로 생성한 레이어의 [OpenLayers]를 클릭 합니다.


geoserver install shapefile


다운받은 파일이 뭔지 몰랐는데 이거였군요.

위에서 [새로운 데이터 저장소]의 종류가 많았는데 하나씩 추가해 보면서 테스트를 해보세요.


- copy coding -


12345···62

+ Recent posts