2012-06-12 2 views
1

잘 주소 및 좌표가있는 위치 이름을 저장하는 데 사용하는 xml 파일이 있습니다. 지도에서 위치를 찾는 데 도움이되는이 데이터가 필요합니다. 이제는 모바일 플랫폼 - 안드로이드 및 아이폰에 응용 프로그램을 배포하려는 검색 시간을 줄이기 위해 많은 양의 데이터가 포함되어 있으므로 xml 파일이 거대합니다. 내가 정확히하는 것은 사용자의 현재 위치를 얻은 다음 xml을 하나씩 구문 분석하고 좌표를 가져오고 위치와 사용자 사이의 거리를 계산 한 다음 거리가 반경보다 작 으면 화면에 인쇄하는 것입니다. 그래서 어떤 정렬이나 검색 algo는 사용자의 현재 좌표 좌표가 될 것입니다.위치를 포함하는 XML 파일에서 검색 및 정렬 좌표

+0

Google지도 API를 사용하여 순수한 자바 스크립트 기능으로 자바 스크립트 부분에서 수행 할 수있는 훨씬 빠른 속도로 위치를 표시 할 수 있으므로 원본 측의 정렬 부분을 옮겨야한다고 생각합니다. – dhaval

+0

"거대한"파일은 무엇입니까? 데이터를 메모리의 데이터 구조에로드 할 수 있습니까? 아니면 너무 큰 파일입니까? – hugomg

+0

그것은 다양한 매개 변수와 위도와 경도가있는 국가의 위치 목록을 포함하게됩니다 ... @dhaval 버디 저는 이미 거리를 계산하기 위해 로컬로 함수를 가지고 있습니다. frm 좌표, 적절한 레코드를 선택하기위한 필터를 만들고 싶습니다. 레코드의 좌표 및 사용자의 현재 위치에 의존 – Neji

답변

1

XML 파일 사용에 제한이 있습니다. 확인을 클릭하십시오. 그러나 데이터베이스를 전혀 사용하지 않는 것에 대한 제약이 있습니까? XML과 데이터베이스 둘 다 유지하는 것에 반대합니까?

그렇지 않은 경우 좌표와 키를 XML 파일에서 즉시 검색하여 데이터베이스에 저장할 수 있습니다. 이렇게하면 XML 파일에서 빠른 검색과 느린 (그러나 최소한의) 읽기를 얻을 수 있습니다.

데이터베이스를 사용할 수없는 경우 좌표와 (다시) 키를 다른 파일의 XML 파일에 저장하려고 시도 할 수 있습니다.이 파일은 훨씬 작으며 트리 내부에있는 일종의 정렬을 구성 할 수 있습니다. 주문 또는 파티셔닝.

마지막으로 하나의 XML 파일 만 사용할 수 있으면 파일을 빠르게 구문 분석하고 관련 좌표 정보를 추출해야합니다. 이것은 정규 표현식으로 할 수 있습니다. 정기적으로 메모리 검색 버퍼에 항상 전체 레코드가있는 충분한 데이터를 읽습니다 (이 작업을 수행하려면 최대 레코드 크기가 필요합니다). 그러나 모든 지옥처럼 비싸 보입니다.나는 이것을하기 위해 다른 방법을 강하게 강요 할 것이다.

3

XML이 데이터에 적합하지 않은 것 같습니다. 데이터가 저장되는 방식을 제어하는 ​​경우 데이터베이스에 저장하는 것을 고려하십시오 (아는 한 Phonegap이 지원합니다). 먼저 직사각형 반경으로 검색하십시오. 실제로 XML을 사용해야하는 경우 정렬을하면 아마 많은 도움이되지 않을 것입니다 (좌표는 2 차원 집합입니다). 어쩌면 당신은 그것을 두 개의 파일 (각 좌표에 하나씩)로 나누고 정렬 할 수 있지만, 실제로는 매우 못생긴 해결책입니다. 정렬은 XSLT를 통해 이루어질 수 있습니다 (예 : here 참조).

+0

캔트 이외의 다른 사용 xml 파일을 미안 .. – Neji

1

기본적으로 수백/수천 명의 데이터베이스 엔지니어가 이미 수행 한 작업을 다시 작성하려고합니다. 수십만 명의 괴짜가 정렬 방법과 최적화 된 점을 배웠습니다. 그런 다음 이들 중 가장 스마트 한 것이 대기업에서 데이터베이스에 이러한 알고리즘을 적용하는 데 사용되었습니다.

당신의 솔루션은 매우 견고하지 않습니다. XML은 현재하고있는 일을위한 것이 아닙니다. 당신이 XML을 사용하려고한다면 ...

나는 적어도 2 xml 파일을 가지게 될 것입니다 - 하나는 인공 키에 의해 분류 된 데이터를 포함하고 하나는 당신이 갈 매개 변수 (들)을 가지고 있습니다. 에 대한 검색. 그런 다음 후자의 파일을 찾아서 이전 파일에서 찾아야합니다. 우연히도 데이터베이스가하는 일입니다.

나는 당신을 위해 조회/계산을 수행하는 웹 서비스를 진심으로 요구할 것이다. 이미 존재하는 것을 사용하거나 자신 만의 것을 만들 수 있습니다. 어쨌든 앱 작동을위한 연결성이 필요한 것 같습니다.

+0

ys 목적을 위해 연결이 필요합니다. 제 경우에는 어떤 단계를 따라야합니까? xml의 ​​사용은 변경 될 수없는 일이므로 hw 정확히 내가 그것을 최적화 할 수 있습니까 ?? 답변 해주셔서 감사합니다. – Neji

+0

질문에 샘플 데이터 일부를 제공하십시오. – mson

0

XML의 최상단을 선택하는 것은 매우 나쁜 선택입니다. 응용 프로그램에 번들 SpatiaLite 번들. 그것은 SQLite의 공간적 특징을 확장 한 다음 지리적 위치 데이터에 대한 다양한 쿼리를 수행 할 수 있습니다. 가장 가까운 지리적 포인트를 검색하거나 일부 반경에서 모두 검색 할 수 있습니다. SQL 쿼리. XML 데이터를 구문 분석하여 SpatiaLite DB 파일 ... 원본 XML보다 확실히 작을 것입니다.