Mobile GIS

Farmer

GÂY DỰNG
NHẬP HỘI
Quả thực là mình cũng không để tâm đến vụ cải thiện bản đồ lắm, hiện giờ mình chỉ dùng bản đồ để làm nền hiển thị các lớp dữ liệu của mình thôi.
Về ý tưởng thì cũng có một vài ý tưởng như sau:

1. ý tưởng 1: Mình đang nghĩ phối hợp với bác DigitalWorld để đưa các nhà hàng, quán ăn lên bản đồ. (Không biết bá DigitalWorld có đồng ý không nhỉ). Để giải quyết bài toán này thì:
- Tinh chỉnh bản đồ để giảm dung lượng, nạp nhanh hơn.
- Tạo các lớp dữ liệu nhà hàng, quán ăn (cái vụ này mình làm được), hiệu chỉnh lại vị trí theo GPS (Cái vụ này làm phê lắm). Bác DigitalWorld sưu tầm đến hơn 1600 nhà hàng, quán ăn, chưa kể các thông tin kèm theo, thu thập lại vị trí thực tế, chắc chết mất.

2. Ý tưởng 2: Mình thấy một số bác có nhu cầu biết được các điểm đặt máy ATM của các ngân hàng.Đây cũng là nhu cầu chính đáng. Giải quyết bài toán này cũng tương tự như bài toán trên thôi.

Không biết bác nào có thể làm cùng với mình nhỉ?
 

DellAximX5

androidcore.com
GẮN KẾT
GÂY DỰNG
Với GPS thì hiện nay mình chỉ quan tâm đến vấn đề đường đi. Tuy nhiên để giải quyết bài toán này mình thấy khá phức tạp. Cho 2 vị trí, tìm đường đi ngắn nhất từ vị trí này đến vị trí kia. 2 vị trí này có thể ở trong nội thành, ngoại thành, (vị trí bất kỳ trên thế giới ??!!). Mình chỉ mới nghĩ sơ sơ thôi đã ngao ngán, ví dụ: Bây giờ là 11h trưa (giờ cao điểm tan tầm), mình có cuộc họp gấp với khách hàng ở Nhà Hàng X, làm sao mình đi đến đó nhanh nhất bây giờ? đi bằng phương tiện gì thì tốt nhất (tránh kẹt xe, phù hợp đường xá nơi cần đến)? đi thế nào thì tiết kiệm chi phí nhất? ....

Ôi ngao ngán!!!
 

c4l

GÂY DỰNG
DellAximX5 said:
Với GPS thì hiện nay mình chỉ quan tâm đến vấn đề đường đi. Tuy nhiên để giải quyết bài toán này mình thấy khá phức tạp. Cho 2 vị trí, tìm đường đi ngắn nhất từ vị trí này đến vị trí kia. 2 vị trí này có thể ở trong nội thành, ngoại thành, (vị trí bất kỳ trên thế giới ??!!). Mình chỉ mới nghĩ sơ sơ thôi đã ngao ngán, ví dụ: Bây giờ là 11h trưa (giờ cao điểm tan tầm), mình có cuộc họp gấp với khách hàng ở Nhà Hàng X, làm sao mình đi đến đó nhanh nhất bây giờ? đi bằng phương tiện gì thì tốt nhất (tránh kẹt xe, phù hợp đường xá nơi cần đến)? đi thế nào thì tiết kiệm chi phí nhất? ....

Ôi ngao ngán!!!

Bài toán tìm đường đi ngắn nhất không phải là khó, bài toán tìm đường đi thông minh cũng ko khó, cái khó là dữ liệu, nếu bác đưa cho tôi dữ liệu tôi sẽ giúp bác phần còn lại.

Ví dụ như bác đề cập đến, giờ tan tầm là 11h thì phải có dữ liệu về mật độ của mỗi đoạn đường trên toàn thành phố. Phát triển thêm có thể phân loại đường như chiều rộng của đường, chất lượng có nhiều ổ gà ko, có cây xanh bên đường ha ko, có những bệnh viện hay trường học ở những đoạn đường nào. Vì những đoạn đường mà có trường học rất hay bị ách tắc giờ tan học của học sinh.

.....


Thân
 

Tư Triều

GẮN KẾT
GÂY DỰNG
Bác đợi mấy hôm em up con chương trình của em mới làm nhé. DAng chan đời nên lười nhập liệu.Em không có thiết bị GPS nên mới làm được phần bản đồ thôi.Cũng có tìm đường. Mới demo trên mấy phố nội thành.
Nhân tiện hỏi các bác cách đóng gói ctrinh trong evc. Em chạy giả lập hoặc copy ctrinhg vào PDA bằng sync thì OK, nhưng cứ dịch bình thường rồi copy sang 1940 thì tòan báo không đúng version.
Em demo con ctrinh nhe
Tìm đường có 2 loại :
1. Tìm tên đường : Tìm bằng cách lựa chọn (hoặc gõ)tên đường ở ô list box, màn hình sẽ zoom tới vị trí thích hợp của đường đó.Sau đây là minh họa

sau khi lựa chọn sẽ ra như sau :
 

Tư Triều

GẮN KẾT
GÂY DỰNG
Bố khỉ, úp lắm ảnh quá nên em phải cắt ra làm 2 phần:
2. Tìm đường đi ngắn nhất : Phải xác định điểm xuất phát (vì nghèo không có tiền mua GPS) và điểm đích bằng một trong 2 cách :
- Lựa chọn tên đường xuất phát và đích như cách tìm tên đường
- Cách thứ 2 khóai hơn là dịch chuyển tới vị trí thích hợp và chọt thẳng vào màn hình một điểm bất kì cho điểm xuất phát và điểm đích
Sau đây là hình minh họa:
Chọt vào một điểm bất kì , ô lựa chọn sẽ hiển thị tên đường gần nhất điểm đó. Em không capture được quá trình chọt nên chỉ capture sau khi đã chọt, các bác thông cảm :
*. Chọt điểm đầu :

**.Chọt điểm đích :

***. Và kết quả là :


Các bác góp ý giúp em. Phần hiển thị biết là thô thiển vì em không có nhiều thời gian (vài hôm nữa bảo vệ rồi), lại mất quá nhiều thời gian để làm tool dựng bản đồ.
Các bác cứ sợ dựng dữ liệu. Em thì mới chỉ dựng được khu trung tâm HN (=1/5 MAP) nhưng thấy cũng chẳng vấn đề lắm. Vừa đấu giá vừa dựng thì Mất khoảng 2h bằng tool em viết.
Dữ liệu cả HN em ước tính <300K
 

c4l

GÂY DỰNG
Nhìn qua chương trình của bác thấy bác cũng mắc lỗi y hệt em 6 tháng trước:
1. Chương trình ko tự clip geomery, tức là chỉ render những object có trên phần viewable window thôi, những object mà nó chỉ có 1 phần view được thì phải cắt ra. -> Cái này sẽ cải thiện performance rõ rệt. Nếu để nguyên thế thì khi view rộng hơn hoặc bản đồ phức tạp lên 1 chút sẽ rất chậm. Đặc biệt là các chương trình viết cho Mobile và PDA, thuật toán cần phải được quan tâm kỹ lưỡng.

2. Phần render labels của bác ko tốt, vì bác ko tính MBR của render, khi render bác nên coi label như 1 object và ko được render chồng lên nhau (Xem cái hình thứ 3-Hàng Bông và Lý Quốc Sư cắt nhau). --> CHính vì vậy nên khi bác setZoom lớn hơn các labels sẽ chồng hết lên nhau. -> Performance giảm rất nhiều.

Khi bác cải thiện xong thuật toán render cho cả geometry và label thì bác có thể muốn xem qua phần index để tiếp tục tăng performance, hiện nay thường người ta hay dùng 2 loại index: 1 là RTree, 2 là QTree, cách thứ 1 thường dùng để render points và cách thứ 2 thường để render geometry.

Chút góp ý nho nhỏ để sản phẩm của bác hoàn thiện hơn.

Thân,
 

Tư Triều

GẮN KẾT
GÂY DỰNG
Cảm ơn bạn đã góp ý. Thực tế trong chương trình của mình đã giải quyết các vấn đề đó như sau :
- Có thuật toán xác định các đối tượng đang được hiển thị, khi tác động lên màn hình thì chỉ xét tương quan với các đối tượng đó. Do vậy khi zoom càng to, tốc độ càng nhanh vì đối tượng được hiển thị càng ít.
- Khi thay đổi góc nhìn như PAN bản đồ chẳng hạn, chương trình chỉ xét đến các đường khung chứ không phải toàn bộ bản đồ nên tốc độ không ảnh hưởng. Chỉ có điều trông không được đẹp mắt, mong muốn là tìm cách capture lại màn hình và tiến hành PAN ảnh như HandMap thì đẹp hơn rất nhiều, nhưng chưa biết cách làm
- Các chữ đúng là bị trồng lên nhau trong trường hợp này vì mình chưa hiệu chỉnh , nhưng chương trình đã được xây dựng để khi tỉ lệ quá nhỏ, các tên đường sẽ không được hiển thị, không có hiện tượng chồng tên. Chồng trong hiện tượng trên là vì tên mình bắt đầu hiển thị ngay đầu đường, 2 đường cắt nhau sẽ bị như thế. Sẽ khắc phục bằng cách chèn thêm một số dấu cách ở đầu.
-Thuật toán tìm đường theo địa điểm thì hiển thị ngay lập tức vì cơ sở dữ liệu cả HN của mình chỉ khoảng 200-300K. Mình tự dựng CSDL bằng tool viết riêng nên chỉ dựng đúng những thứ mình cần, không thiếu không thừa.
Thuật toán tìm đường đi ngắn nhất đã được cải tiến rất nhiều, tốc độ hiện tại cũng chưa có vướng mắc, tuy nhiên liệu mới được 1/5 bản đồ HN (Ở khu phố cổ phức tạp nhất), hy vọng toàn bản đồ dựng lên cũng sẽ nhanh. 1/3 giây cho đường đi ngắn nhất từ KIm Mã đến lò đúc chắc cũng tạm được nhỉ.
Vướng mắc cần hỏi :
Mình thử tạo một mảng khá lớn khoảng 1000*100 thì bị báo thiếu bộ nhớ (eVC), có thật sự là bộ nhớ trong eVC eo hẹp vậy không
 

Tư Triều

GẮN KẾT
GÂY DỰNG
Up luôn giao diện tool dựng bản đồ cho các bác góp ý

Em viết bằng JAVA tool dựng bản đồ. Dữ liệu được lưu tạm vào CSDL trên ORACLE 9i, để có thể lưu, thêm sửa, kiết xuất sau nhiều lần làm việc. Dữ liệu export ra mới dưới dạng file .txt có topology riêng, đây là điều xấu hổ nhất do ko có thời gian tìm hiểu định dạng các file dữ liệu bản đồ. Chẳng ai cho em hết hu hu.Nhưng file txt của em trông xấu mã nhưng thấy chạy chẳng vấn đề gì.
Em muốn phát triển thêm con này quá, tiếc rằng đã kiệt sức rồi. 3 tháng ròng rã thức gần trắng đêm. Bác nào muốn cùng em tiếp sức không. Nhưng mà ai cho mượng con GPS để ghép thử vào thì em sẽ cố tiếp. hihi.
 

c4l

GÂY DỰNG
trước tiên xin góp ý bác về cái tool để draw map. Bác nên nghiên cứu qua 1 chút về cách lưu dữ liệu dưới dạng binary, nếu bác đang dùng Oracle thì có thể xem qua phần Oracle Spatial để biết cách làm của nó. Dữ liệu khi được load vào bộ nhớ bằng binary sẽ nhanh lên từ 10x->1000x tuỳ vào dung lượng. Nếu dữ liệu để ở dạng String rất rất chậm khi load.

tui vừa upload cuốn Simple Fẻature Geometry for OLE/COM cho bác:
Bác chịu khó implemént theo vì đó là chuẩn rồi.

http://www.coding4living.com/temp/99-050-Simple Features Specification For OLE-COM.pdf

Còn phương pháp render của bác chỉ là tạm bợ thôi, ko dùng được, tui upload cuốn thuật toán render label cho bác xem thêm

http://www.coding4living.com/temp/Draw labels Algorithm 2001-44.pdf


Nhưng bác đừng xem cuốn thứ 2 vội, trước tiên hãy xem cuốn thứ 1 vì nó nói rõ ràng model của geometry, từng interface một, chỉ việc implement theo thôi.

Sau đó bác cần implement tiếp 1 số funtions rất cơ bản của 1 geometry object như buffer, MBR...

Càng làm cẩn thận thì càng nhanh vì ko phải quay lại sửa, phần nào xong phải chắc chắn ngon.

Thân,
 

Tư Triều

GẮN KẾT
GÂY DỰNG
Bác xem lại hộ em cái link thứ 2 cái, em cũng cần đọc mà không thể mở được. Đúng là cái label của em cũng chưa thật ổn vì đấy là cái em tự nghĩ.
Lưu trữ nhị phân em cũng nghĩ rồi nhưng nếu load từ oracle, dữ liệu bé tí nên chắc chưa cần đến vậy. Bấm phát load ra luôn.Tuy nhiên em không biết nếu lưu file nhị phân thì chương trình trên PDA import có tốt hơn không, chưa thử vì cũng chưa thấy chậm gì hết, cũng dạng bấm phát ra luôn.Hiện tại em đang quan tâm đến cấu trúc file mapinfor nhưng ko biết kiếm ở đâu.
Cảm ơn bác nhé, bác có ở HN ko, hôm nào em qua demo cho bác, nhìn chương trình bác góp ý chắc tốt hơn.
Em cũng làm bài bản, không tạm bợ lắm. Gặp bác xem qua được thì tốt.
 

Bài viết cần bạn xem thêm

Tình hình là em và bạn bè mới khai trương nhà hàng A La Mer, view bãi Mỹ Khê, Đà Nẵng
Rất mong chào đón các ACE HHVN ghé đến thưởng thức, chia sẽ với người thân, bạn bè đi Đà Nẵng ghé ủng hộ.
thức ăn tươi ngon, giá thành hạp lý, địa điểm thì hết chỗ ...
Top