QGIS를 사용하여 ODBC 연결을 읽습니까? [닫은]


16

추적하는 다양한 위치에 대한 X & Y 필드가 포함 된 대규모 MS Access 데이터베이스를 관리하는 동료가 있습니다. 이전에 데이터를 CSV로 내 보냈고 QGIS Delimited Text Plugin을 사용하여 위치를 플롯했습니다.

이제 CSV로 내보내는 대신 ODBC 연결을 통해 MS Access db에 연결하여 QGIS에서이 데이터를 직접 플로팅하려고합니다.

  1. QGIS가 ODBC 연결의 데이터를 사용하여 XY 위치를 플롯 할 수 있습니까?
  2. 프로젝트를 다시 열 때 레이어가 이전 및 새로 추가 된 모든 위치를 동적으로 "재 연결"할 수 있습니까 (셰이프 파일로 내 보내지 않고 스냅 샷을 생성 함)?
  3. QGIS 내 공간 테이블에 조인 할 수있는 테이블 형식 ODBC 연결을 만들 수 있습니까?

ArcGIS ( "XY 데이터 추가"도구)에서이 모든 작업을 수행 할 수 있으므로이 기능이 QGIS에 존재하면 좋을 것입니다. 나는 그 존재를 언급하는 곳을 찾을 수 없습니다.

공간 데이터베이스로 이동할 계획이 없습니다. GIS 개인으로서 예, 공간 데이터베이스로 이동하는 것이 합리적이라는 것을 알고 있습니다. 예, PostGIS를 사용하여 이러한 종류의 데이터를 관리했습니다. 그러나 이들은 현재 옵션이 아닙니다. 사용자는 GIS 사용자가 아니고 싶어하며 MS Access에서 자신의 데이터베이스를 관리하므로 변경되지 않습니다. 나는 그를 쫓아 내고 GIS 세계에 비명을 지르며 가능한 한 쉽게 만들고 싶습니다. 그는 CSV로 내보내면서 살 수 있으며, MS ACCESS에 ODBC를 사용 하고 QGIS에 XY 데이터를 표시 하는 더 나은 솔루션이 있기를 바랐습니다 .


그렇다면 내 지식으로는 QGIS에 요청한대로 할 수 없습니다. CSV 가져 오기와 동등한 ODBC에서 사용하는 데 동의하지만 모든 종류의 성능을 위해서는 CSV 플러그인과 마찬가지로 동적 연결이 아닌 가져 오기가되어야합니다. 따라서 직접 지원 / 개발하지 않는 한 섭취가 없을 것입니다.
MerseyViking

@ MV- 나는 일반적으로 당신과 동의하고 포인트를 참조하십시오. 그러나 단순히 데이터를 매핑하고 데이터를 분석하지 않는 기가 아닌 사용자의 경우 QGIS의 성능은 문제가되지 않습니다. 데이터에 동적으로 "항상 라이브"연결을하는 것이 성능 문제보다 훨씬 더 중요하다고 생각할 것입니다.
RyanKDalton

답변:


7

주의 사항 : 나는 이것을 시도하지 않았으므로 직접적인 경험이있는 사람에게 기꺼이 인사합니다.

"벡터 레이어 추가"대화창에서 ODBC 데이터 소스에 연결할 수 있습니다. 소스 유형으로 "데이터베이스"를 선택하고 데이터베이스 유형으로 ODBC를 선택하십시오. QGIS는 OGR 용 ODBC 드라이버를 사용 하므로 동일한 경고가 적용됩니다. 즉 GEOMETRY_COLUMNS 등의 테이블이 필요하므로 동료가 데이터베이스를 수정해야합니다.

버전 1.0 릴리스 이후로 Access를 사용하지 않았지만 공간적으로 활성화되지 않았기 때문에 성능이 문제가 될 수 있습니다. 아마도 당신은 Access를 삭제하지 않고 공간적으로 활성화 된 데이터베이스를 사용하지 않을 것입니다. 경제적으로 실현 가능하지는 않지만 동료가 변화에 대한 욕구를 느낀다면 조금 더 나아가는 것이 좋습니다. 강한.


@ MV- 좋은 정보입니다. "벡터 레이어 추가"옵션을 통해 테이블 ​​형식 데이터를 추가 할 수 있다는 것을 몰랐습니다. 그러나 공간적으로 활성화되어 있지 않기 때문에 여전히 공간 형식으로 내 보내야합니다. 그리고 당신은 맞습니다. 사용자는 GIS 또는 데이터베이스가 아니기 때문에 공간적으로 활성화 된 db로 전환하지 않을 것입니다. 그들은 위험 할 정도로 충분한 액세스 교육을
받았습니다

7

QGIS 2에서 사용할 수있는 새로운 "프로세싱"도구를 사용하면 조금 더 쉬워집니다. 여전히 데이터를 "라이브 링크"하는 방법을 찾지 못했지만 (MS Access 테이블의 값을 변경하면 포인트가 자동으로 이동합니다)이 방법은 꽤 잘 작동하는 것 같습니다.

MS Access 데이터베이스에 대한 ODBC 연결을 작성하는 방법에 대해서는 이 페이지 의 주석 섹션 (및 블로그의 경우 @underdark) 에서 "Christina"및 "Bernd"로 이동하십시오.

ODBC 연결을 작성하십시오.

Win7, 32 비트 : 제어판 / 관리 도구 / 데이터 소스 (ODBC)로 이동

Win7, 64 비트 : 64 비트 버전 에서 기본 "제어판 / 관리 도구 / 데이터 소스 (ODBC)"방식을 사용하는 대신 C : \ Windows \ SysWOW64 \ odbcad32.exe를 사용해야합니다.

  1. 사용자 DSN 탭을 클릭 한 다음 '추가'
  2. Microsoft Access Driver (* mdb)까지 아래로 스크롤 한 후 '완료'를 클릭하십시오.
  3. 연결에 이름을 지정한 다음 'select'를 선택하여 데이터베이스 위치를 찾은 다음 'ok'를 클릭하여 대화 상자를 종료하고 다시 dsn 창을 닫으십시오.

QGIS에 레이어를 불러옵니다 :

  1. 벡터 레이어 추가로 이동하여 데이터베이스 옵션을 선택하십시오.
  2. 데이터베이스 '유형'상자에 'ODBC'가 표시되어 있는지 확인하고 '신규'를 클릭하십시오.
  3. 이름 상자에 연결 이름을 입력하십시오.
  4. 호스트는 localhost입니다
  5. 데이터베이스 이름은 4 단계에서 만든 dsn의 이름입니다.
  6. 다른 모든 상자는 비워 두어야하지만 '비밀번호 저장'상자를 선택할 수 있습니다.
  7. 연결을 테스트하고 오류를 기록하십시오. 성공하면 '확인'을 클릭하여 '벡터 레이어 추가'대화 상자로 돌아갑니다.
  8. '열기'를 클릭하여이 연결을 열고 비밀번호를 묻는 경우 '확인'을 클릭하십시오. 지오메트리가 없을 수도 있다는 점을 염두에두고 레이어 (데이터베이스에서 테이블)를 선택하십시오.

XY 데이터를 포인트로 변환합니다 :

  1. TOC에 테이블이 있으면 "프로세싱"-> 도구 상자-> 지리 알고리즘-> 벡터-> 생성-> "테이블의 포인트 레이어"로 이동하십시오.
  2. 아래와 같이 양식을 작성하십시오.

테이블의 포인트 레이어


이 접근 방식에 문제가있는 경우, 확인 QGIS 2.4 액세스 오류 추가 .MDB
RyanKDalton

QGIS에 MS 액세스를 연결하는 데 도움을 주셔서 감사합니다. 국가 3 문자 코드를 결합 레이어로 사용하고 있으며 매우 훌륭하게 작동했습니다

선 또는 다각형이있는 테이블이있는 경우 어떻게 맵을 생성 할 수 있습니까?
MichaelR

5

사용 가능한 다른 옵션이 있는지 여전히 듣고 싶어하지만 eVis 플러그인을 사용하여 이것이 가능하다는 메시지 게시물보았습니다 .

이 문서는 데이터베이스 연결 섹션 에서 정적 스냅 샷을 만들지 않고 MS Access 또는 ODBC 연결에 연결하여 데이터베이스에서 XY 지점 위치를 만드는 방법을 설명합니다. 난 그냥 "select * from"를 입력하고 eVis는 레이어 이름과 XY 필드를 묻는 대화 상자를 팝업했습니다.

불행히도 다음 번에 프로젝트가 열릴 때 QGIS가 혼동되기 때문에 ( "하나 이상의 프로젝트 계층을 열 수 없음") MS Access db에 "실시간 연결"연결을 생성하는 것처럼 보이지 않습니다. 그러나 이에 대한 해결책 은 사용자가 선택할 수 있는 사전 정의 된 XML 쿼리 를 작성하는 것 입니다.

따라서 완벽한 솔루션은 아니지만 CSV로 내보내는 것보다 한 단계 더 좋습니다. 앞으로 Delimited Text 플러그인이이 목적으로 ODBC 연결을 허용하도록 확장 된 것을 보는 것이 좋을 것이라고 생각합니다.


아! 정말 유용합니다. 그것은 약간의 후프와 관련이 있지만 적어도 일회성 설정이어야합니다. QGIS에서보기를 변경하면 데이터가 다시로드됩니까? 아니면 수동으로 쿼리를 다시 실행할 때까지 캐시합니까?
MerseyViking

@ MV- 실험을 통해 알 수 있듯이 eVis는 QGIS에 캐시 된 계층을 생성하는 것으로 보입니다. 예를 들어 eVis로 레이어를로드 한 후 Access DB에서 레코드 중 하나를 삭제하고 QGIS 화면을 새로 고쳤으며 "삭제 된"지점이 유지되었습니다. 그러나 캐시 된 새 레이어를 만들 때 삭제 된 지점이 예상대로 표시되지 않았습니다. 패닝 및 확대 / 축소는 캐시 된 레이어 표시에 영향을 미치지 않았습니다.
RyanKDalton

4

다른 방법은 데이터를 postgis로 옮기는 것입니다. postgresql copy-command를 사용하여 csv 파일을 직접 읽을 수 있습니다. 그런 다음 xy 필드에서 점을 만들 수 있습니다.

그런 다음 액세스 할 때 일부 보고서 또는 다른 기능을 사용하려는 경우 액세스에서 postgis에 연결할 수 있습니다.

이점은 공간 데이터가 속한 공간 데이터를 공간 데이터베이스에 넣은 다음 odbc를 사용하여 비 공간 데이터를 처리하기 위해 다시 액세스하여 데이터를 액세스하려는 경우에 유용합니다.

postgresonline.com에서 postgis / postgresql이 연결에 액세스하기위한 훌륭한 자습서가 있습니다. postgis / postgresql에 impöorting에 대한 자습서는 bostongis.org에서 동일한 저자가 찾을 수 있습니다.

/ 니클라스


0

ms-access 데이터를 postgres 또는 SQLite로 변환 한 후 다시 변환 할 수있는 여러 변환 제품이 있습니다. 데이터를 한 쪽에서 다른쪽으로 매우 빠르게 이동시킵니다. 이러한 응용 프로그램 중 하나를 사용하면 데이터 스냅 샷에서 QGIS를 실행하는 옵션이 제공 될 수 있습니다.


1
그런 도구를 제안 할 수 있습니까?
Jens
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.