File: chunks.rst

package info (click to toggle)
contourpy 1.3.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 16,688 kB
  • sloc: python: 7,998; cpp: 6,241; makefile: 13
file content (67 lines) | stat: -rw-r--r-- 2,358 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
.. _chunks:

Chunks
------

The domain to contour can be divided up into a number of chunks that are processed separately.

Advantages of using chunks:

- They produce shorter lines/polygons that may be simpler or faster to render.
- They make subsequent spatial queries easier.
- They allow the use of multithreaded contouring (see :ref:`threads`).

Disadvantages:

- There is a slight performance cost of using chunks.
- Some rendering algorithms show faint lines between neighbouring chunks.

.. note::

   Think of chunks as dividing the quads rather than the points of a domain. A ``z`` array of shape
   ``(ny, nx)`` has ``(ny, nx)`` points but only ``(ny-1, nx-1)`` quads.  This can be considered a
   single chunk of shape ``(ny-1, nx-1)``.  Neighbouring chunks have neighbouring quads but they
   share the points that lie on their common boundary.

There are three possible ways of specifying chunks in :func:`~.contour_generator` which
are the keyword arguments ``chunk_size``, ``chunk_count`` and ``total_chunk_count``. A maximum of
one of the three may be specified.

.. warning::

   You may not always receive the chunk sizes or counts that you request. A chunk has a minimum
   size of 1x1 quad!

chunk_size
^^^^^^^^^^

``chunk_size`` may be a tuple of ``(y_chunk_size, x_chunk_size)`` or a single integer that is used
for both x and y chunk sizes.

   >>> z = np.ones((5, 10))  # Sample z data.
   >>> cont_gen = contour_generator(z=z, chunk_size=(2, 4))
   >>> cont_gen.chunk_size
   (2, 4)
   >>> cont_gen.chunk_count
   (2, 3)

The final chunk in each direction may be smaller than the others. Here in the x-direction there are
3 chunks of size 4; the first two x-chunks cover 8 quads leaving the final x-chunk to cover just a
single quad.

chunk_count
^^^^^^^^^^^

``chunk_count`` may be a tuple of ``(y_chunk_count, x_chunk_count)`` or a single integer that is
used for both x and y chunk counts.

Using ``chunk_count`` can give more even chunks than using ``chunk_size``.

total_chunk_count
^^^^^^^^^^^^^^^^^

``total_chunk_count`` attempts to give a sensible combination of x and y chunk counts.

It uses a simple algorithm that finds two integer factors that are close as possible to
``sqrt(total_chunk_count)``. Do not use a prime number for ``total_chunk_count`` as the two factors
it will use are ``total_chunk_count`` and ``1``.