-
1. Data: 2014-04-25 19:45:32
Temat: Gdy mamy numery punktow zamiast wspolrzednych
Od: Borneq <b...@a...hidden.pl>
Linie łamane i tym podobne obiekty są zdefiniowane przez numery punktów,
np: łamana to punkty: 3458247581,1563173017,2710262946,..
a wcześniej podane, jakie te punkty mają współrzędne.
Do wyświetlenia potrzebne są współrzędne a nie punkty, czyli potrzebny
jest konwerter.
Najprościej jest zrobić tak, że mamy dla każdego punktu trójkę:
- id_punktu
- współrzędna X
- współrzędna Y
czytamy z pliku, gromadzimy w tablicy, sortujemy po id_punktu a potem
gdy mamy łamaną to binarnie wyszukujemy punkt
Problemem jest, że tych punktów może być bardzo dużo, więc ilość pamięci
wymaganej dla konwertera może być większa niż byśmy chcieli.
czy można ją ograniczyć?
Drugą sprawą jest przypadek, gdy mamy definicję punktów, potem obiektów
odnoszących się do punktów, ale potem znowu punktów i znowu obiektów.
Więc najprościej byłoby za pierwszym razem przeczytać plik, wyłapać same
punkty, za drugim razem czytać same obiekty.
Ale to wymaga dwukrotnego przeczytania pliku, który może być bardzo duży
i jednokrotne czytanie już trwa dość długo.
-
2. Data: 2014-04-25 20:01:08
Temat: Re: Gdy mamy numery punktow zamiast wspolrzednych
Od: Wojciech Muła <w...@g...com>
On Friday, April 25, 2014 7:45:32 PM UTC+2, Borneq wrote:
> Problemem jest, że tych punktów może być bardzo dużo, więc ilość pamięci
> wymaganej dla konwertera może być większa niż byśmy chcieli.
> czy można ją ograniczyć?
Ale dlaczego to jest problemem? Te dane nie mieszczą się dostępnej
pamięci?
w.
-
3. Data: 2014-04-25 20:03:47
Temat: Re: Gdy mamy numery punktow zamiast wspolrzednych
Od: Borneq <b...@a...hidden.pl>
W dniu 2014-04-25 20:01, Wojciech Muła pisze:
> Ale dlaczego to jest problemem? Te dane nie mieszczą się dostępnej
> pamięci?
dla bardzo dużych plików mogą się nie zmieścić
-
4. Data: 2014-04-28 10:51:17
Temat: Re: Gdy mamy numery punktow zamiast wspolrzednych
Od: Paweł Kierski <n...@p...net>
W dniu 2014-04-25 20:03, Borneq pisze:
> W dniu 2014-04-25 20:01, Wojciech Muła pisze:
>> Ale dlaczego to jest problemem? Te dane nie mieszczą się dostępnej
>> pamięci?
>
> dla bardzo dużych plików mogą się nie zmieścić
>
Zakładam, że plik można raz obrobić na początku.
Przesortować plik wg ID. Podzielić na bloki po k punktów (zrobić indeks
ID dla 0, 999, 1999 itd. punktu w pliku, jeśli dzielisz co 1000). Każdy
z tych bloków będzie miał z góry ograniczony rozmiar, dzięki czemu
łatwo będzie zrobić cache - czytać po bloku i trzymać ostatnio czytane
w pamięci.
--
Paweł Kierski
n...@p...net