공간 데이터를위한 API 디자인 하지만) 워크

동료가 분석을 위해 일부 공간 데이터 세트를 사용할 수 있도록 API를 만들려고합니다.

저의 작업의 일부는 데이터를 분석하고 준비한 다음 다른 사람들이 추가 분석에 사용할 수 있도록하는 것입니다. 작업은 (현재 더 작은 규모이고 덜 정교 하지만) 워크 스코어 와 유사 하지만 엄청난 데이터 세트가 필요합니다. 원본 데이터를 공유하는 방법에 대한 제한이 증가하고 있지만 파생 작업은 공유 할 수 있습니다. 분석 결과를 공유하는 방법 (대량의 데이터 세트를 전달하는 것 제외)에 대해 생각하고 API가 하나의 접근법이라고 생각했습니다. API를 만들 때 어떤 점을 고려해야합니까? 따를 수있는 디자인 사양이 있습니까?

내 비전은 현재보다 조금 더 웅장하지만,이 작업의 초기 단계에서 고려해야 할 유용한 프레임 워크라고 생각합니다.



답변

API에 따르면 Google Maps API와 같은 HTTP POST / GET 유형을 통해 데이터에 대한 일종의 네트워크 액세스를 의미한다고 가정합니다. 래스터 또는 벡터 데이터입니까? 이 토론의 목적을 위해 벡터를 가정하겠습니다. 이것은 실제로 응용 프로그래밍 인터페이스가 아닌 통신 프로토콜입니다.

API 자체가 아니라 표준 프로토콜이 많기 때문에 처음부터 아무것도 디자인 할 필요가 없습니다. API가 아닌 경우 API를 호출하는 것에 대한 약간의 버그가 있지만, 나는 당신을 지치지 않을 것입니다! ). 읽기 전용 벡터 데이터를 클라이언트에 제공하려는 경우 데이터베이스 앞에 있는 WFS 서버 만 있으면됩니다. 내가 사용했습니다 GeoServer를 과거에,하지만 난의 lightweigtness 선호 TinyOWS을 . 둘 다 동일한 작업을 수행합니다. 파생 데이터의 데이터베이스에 액세스하도록 구성하고 웹 서버의 일부로 실행되도록 설정합니다 ( Apache 는 일반적이지만 lighttpd를 선호합니다)), 거기에 있습니다. QGIS는 WFS 서버에서 데이터를로드 할 수 있으며 Arc도 마찬가지입니다. OpenLayers에는 브라우저 기반 솔루션을위한 WFS 렌더링 기능이 있습니다. 하위 수준에서 GDAL을 사용하여 WFS에서 OGR이 지원하는 모든 벡터 형식으로 데이터를 변환 할 수 있습니다.

편집 기능을 원하는 경우 GeoServer와 TinyOWS는 모두 WFS-T를 지원하므로 사용자는 분석 내용을 서버에 다시 업로드 할 수 있습니다.

자신 만의 API를 만들면 엄청나게 전문적이지 않고 성능과 같은 특정 요구 사항이없는 한 이러한 표준을 처음부터 적용하려는 목적을 실제로 무시할 수 있습니다. 합당한 양의 자원없이이 길을가는 것은 어려운 일이 아닙니다.


답변

몇 가지 옵션이 있습니다. 선택은 데이터 모델, 제공 할 데이터 유형, 의도 된 사용 모델, 액세스 제어 및 제공 플랫폼 (웹, HTML, Java 서버, IIS, 정적 데이터 세트)에 따라 다릅니다.

  1. 기존 제품을 확장하여 데이터 세트를 소비하십시오. (또는 전용?) 컴퓨터 에서 GeoServer 인스턴스 를 호스팅하고 데이터를 그런 식으로 전달하는 것을 볼 수 있습니다. 데이터가 GeoServer가 이해할 수있는 형식이 아닌 경우 해당 기능을 제공하기 위해 Java 패키지를 작성하는 옵션이 있습니다. 이점은 시각화 (WMS) 및 기능 조작 / 다운로드 (WFS)에 대한 공간 정보를 제공하고 지오 캐싱 및 타일링과 같은 다른 이점을 제공하기 위해 잘 정의 된 표준을 가지고 있다는 것입니다.
  2. API 옵션을 사용하면 사용자가 인터페이스하는 방법을 완전히 제어 할 수 있습니다. 첫 번째 작업 은 사용자가 데이터와 상호 작용하는 방식을 정의하는 것입니다. 데이터에 대한이 인터페이스는 성공 또는 실패의 핵심입니다. 인터페이스가 너무 열려 있으면 복잡하고 사용할 수 없게되고 너무 단순하고 제한적이거나 느리거나 채택되지 않을 수 있습니다. 어느 쪽이든, 사용자가 데이터에 액세스하는 방식과 사용자가 데이터를 사용하기를 원하는 방식을 정의하는 것이 중요합니다.

행운을 빕니다. 릴리스 방법 및주기, 버그 수정, 테스트를 고려해야하기 때문에 API는 작은 일이 아닙니다. 이 모든 것이 유용성에 기여합니다. 나는 그것을하지 말라고하지 않습니다, 그것은 좋은 경험이 될 것입니다. 기존 제품을 기반으로 구축하는 것도 긍정적 인 경험이 될 수 있습니다.