mapdata 3.20.0__tar.gz → 3.22.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. {mapdata-3.20.0/mapdata.egg-info → mapdata-3.22.0}/PKG-INFO +1 -16
  2. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/mapdata.py +94 -30
  3. {mapdata-3.20.0 → mapdata-3.22.0/mapdata.egg-info}/PKG-INFO +1 -16
  4. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata.egg-info/requires.txt +10 -9
  5. {mapdata-3.20.0 → mapdata-3.22.0}/setup.py +2 -2
  6. {mapdata-3.20.0 → mapdata-3.22.0}/LICENSE.txt +0 -0
  7. {mapdata-3.20.0 → mapdata-3.22.0}/MANIFEST.in +0 -0
  8. {mapdata-3.20.0 → mapdata-3.22.0}/README.md +0 -0
  9. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/configfile/mapdata.conf +0 -0
  10. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/0.xbm +0 -0
  11. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/1.xbm +0 -0
  12. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/2.xbm +0 -0
  13. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/3.xbm +0 -0
  14. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/4.xbm +0 -0
  15. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/5.xbm +0 -0
  16. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/6.xbm +0 -0
  17. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/7.xbm +0 -0
  18. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/8.xbm +0 -0
  19. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/9.xbm +0 -0
  20. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/A.xbm +0 -0
  21. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/B.xbm +0 -0
  22. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/C.xbm +0 -0
  23. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/D.xbm +0 -0
  24. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/E.xbm +0 -0
  25. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/F.xbm +0 -0
  26. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/G.xbm +0 -0
  27. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/H.xbm +0 -0
  28. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/I.xbm +0 -0
  29. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/J.xbm +0 -0
  30. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/K.xbm +0 -0
  31. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/L.xbm +0 -0
  32. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/M.xbm +0 -0
  33. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/N.xbm +0 -0
  34. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/O.xbm +0 -0
  35. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/P.xbm +0 -0
  36. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/Q.xbm +0 -0
  37. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/R.xbm +0 -0
  38. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/S.xbm +0 -0
  39. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/T.xbm +0 -0
  40. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/U.xbm +0 -0
  41. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/V.xbm +0 -0
  42. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/W.xbm +0 -0
  43. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/X.xbm +0 -0
  44. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/Y.xbm +0 -0
  45. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/Z.xbm +0 -0
  46. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/airplane.xbm +0 -0
  47. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/anchor.xbm +0 -0
  48. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/ball.xbm +0 -0
  49. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/ball_small.xbm +0 -0
  50. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/bar.xbm +0 -0
  51. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/bars.xbm +0 -0
  52. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/binoculars.xbm +0 -0
  53. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/bird.xbm +0 -0
  54. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/block.xbm +0 -0
  55. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/block_small.xbm +0 -0
  56. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/bookmark.xbm +0 -0
  57. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/box_stack.xbm +0 -0
  58. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/camera.xbm +0 -0
  59. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/cancel.xbm +0 -0
  60. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/car.xbm +0 -0
  61. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/car2.xbm +0 -0
  62. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/center8.xbm +0 -0
  63. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/check.xbm +0 -0
  64. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/check_circle.xbm +0 -0
  65. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/checkbox.xbm +0 -0
  66. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/checkerboard.xbm +0 -0
  67. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/chevrons.xbm +0 -0
  68. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/circle.xbm +0 -0
  69. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/circle_bar.xbm +0 -0
  70. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/circle_plus.xbm +0 -0
  71. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/circle_stipple.xbm +0 -0
  72. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/circle_triangle.xbm +0 -0
  73. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/circle_wedge.xbm +0 -0
  74. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/circle_x.xbm +0 -0
  75. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/clock.xbm +0 -0
  76. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/columns.xbm +0 -0
  77. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/contract.xbm +0 -0
  78. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/cross.xbm +0 -0
  79. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/darkeye.xbm +0 -0
  80. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/decrease.xbm +0 -0
  81. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/deposition.xbm +0 -0
  82. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/diag_ll.xbm +0 -0
  83. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/diag_lr.xbm +0 -0
  84. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/diag_ul.xbm +0 -0
  85. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/diag_ur.xbm +0 -0
  86. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/dialog.xbm +0 -0
  87. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/diamond.xbm +0 -0
  88. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/donkey.xbm +0 -0
  89. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/dot.xbm +0 -0
  90. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/down.xbm +0 -0
  91. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/drop.xbm +0 -0
  92. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/elephant.xbm +0 -0
  93. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/expand.xbm +0 -0
  94. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/eye.xbm +0 -0
  95. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/fire.xbm +0 -0
  96. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/fish.xbm +0 -0
  97. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/flag.xbm +0 -0
  98. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/flag2.xbm +0 -0
  99. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/four_arrows.xbm +0 -0
  100. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/graph.xbm +0 -0
  101. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/hand.xbm +0 -0
  102. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/hash.xbm +0 -0
  103. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/heart.xbm +0 -0
  104. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/hidden.xbm +0 -0
  105. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/hourglass.xbm +0 -0
  106. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/house.xbm +0 -0
  107. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/increase.xbm +0 -0
  108. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/info.xbm +0 -0
  109. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/leaf.xbm +0 -0
  110. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/left.xbm +0 -0
  111. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/lightbulb.xbm +0 -0
  112. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/lightning.xbm +0 -0
  113. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/lightning2.xbm +0 -0
  114. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/location_ptr.xbm +0 -0
  115. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/mine.xbm +0 -0
  116. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/nested_boxes.xbm +0 -0
  117. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/pennant.xbm +0 -0
  118. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/pennant2.xbm +0 -0
  119. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/people.xbm +0 -0
  120. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/person.xbm +0 -0
  121. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/person2.xbm +0 -0
  122. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/person3.xbm +0 -0
  123. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/phone.xbm +0 -0
  124. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/photo.xbm +0 -0
  125. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/picnic.xbm +0 -0
  126. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/plus.xbm +0 -0
  127. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/point_down.xbm +0 -0
  128. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/point_left.xbm +0 -0
  129. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/point_right.xbm +0 -0
  130. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/point_up.xbm +0 -0
  131. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/pointer_ne.xbm +0 -0
  132. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/pointer_nw.xbm +0 -0
  133. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/pointer_se.xbm +0 -0
  134. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/pointer_sw.xbm +0 -0
  135. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/puzzle.xbm +0 -0
  136. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/q1.xbm +0 -0
  137. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/q1_notch.xbm +0 -0
  138. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/q2.xbm +0 -0
  139. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/q2_notch.xbm +0 -0
  140. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/q3.xbm +0 -0
  141. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/q3_notch.xbm +0 -0
  142. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/q4.xbm +0 -0
  143. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/q4_notch.xbm +0 -0
  144. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/qmark_circle.xbm +0 -0
  145. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/qmark_circle2.xbm +0 -0
  146. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/raincloud.xbm +0 -0
  147. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/right.xbm +0 -0
  148. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/rocket.xbm +0 -0
  149. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/rocket2.xbm +0 -0
  150. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/rose.xbm +0 -0
  151. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/rows.xbm +0 -0
  152. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/scales.xbm +0 -0
  153. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/search.xbm +0 -0
  154. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/search2.xbm +0 -0
  155. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/skull.xbm +0 -0
  156. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/square.xbm +0 -0
  157. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/star.xbm +0 -0
  158. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/stipple.xbm +0 -0
  159. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/stop.xbm +0 -0
  160. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/surprise_circle.xbm +0 -0
  161. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/swamp.xbm +0 -0
  162. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/target.xbm +0 -0
  163. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/target2.xbm +0 -0
  164. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/ten.xbm +0 -0
  165. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/trash.xbm +0 -0
  166. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/tree.xbm +0 -0
  167. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/tree2.xbm +0 -0
  168. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/tree3.xbm +0 -0
  169. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/triangle.xbm +0 -0
  170. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/triangle_open.xbm +0 -0
  171. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/triangle_sm.xbm +0 -0
  172. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/up.xbm +0 -0
  173. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/vapor.xbm +0 -0
  174. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/warning.xbm +0 -0
  175. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/wave.xbm +0 -0
  176. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/wave2.xbm +0 -0
  177. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/wave3.xbm +0 -0
  178. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/weather.xbm +0 -0
  179. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/wedge.xbm +0 -0
  180. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/wedge_sm.xbm +0 -0
  181. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/wedges_3.xbm +0 -0
  182. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/well.xbm +0 -0
  183. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/whale.xbm +0 -0
  184. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/whale2.xbm +0 -0
  185. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/wheelchair.xbm +0 -0
  186. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/zigzags.xbm +0 -0
  187. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/zigzags2.xbm +0 -0
  188. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/20x20/ball20.xbm +0 -0
  189. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/20x20/block20.xbm +0 -0
  190. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/20x20/circle20.xbm +0 -0
  191. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/20x20/q1_20.xbm +0 -0
  192. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/20x20/q2_20.xbm +0 -0
  193. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/20x20/q3_20.xbm +0 -0
  194. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/20x20/q4_20.xbm +0 -0
  195. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/20x20/square20.xbm +0 -0
  196. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/24x24/ball24.xbm +0 -0
  197. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/24x24/block24.xbm +0 -0
  198. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/24x24/circle24.xbm +0 -0
  199. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/24x24/square24.xbm +0 -0
  200. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/28x28/ball28.xbm +0 -0
  201. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/28x28/block28.xbm +0 -0
  202. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/28x28/circle28.xbm +0 -0
  203. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/28x28/square28.xbm +0 -0
  204. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata.egg-info/SOURCES.txt +0 -0
  205. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata.egg-info/dependency_links.txt +0 -0
  206. {mapdata-3.20.0 → mapdata-3.22.0}/mapdata.egg-info/top_level.txt +0 -0
  207. {mapdata-3.20.0 → mapdata-3.22.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mapdata
3
- Version: 3.20.0
3
+ Version: 3.22.0
4
4
  Summary: An interactive map and table explorer for geographic coordinates in a spreadsheet, CSV file, or database that includes data plotting and statistical summaries
5
5
  Home-page: https:/hg.sr.ht/~rdnielsen/mapdata
6
6
  Author: Dreas Nielsen
@@ -24,21 +24,6 @@ Classifier: Topic :: Scientific/Engineering
24
24
  Requires-Python: >=3.8
25
25
  Description-Content-Type: text/markdown
26
26
  License-File: LICENSE.txt
27
- Requires-Dist: tkintermapview
28
- Requires-Dist: pyproj
29
- Requires-Dist: jenkspy
30
- Requires-Dist: odfpy
31
- Requires-Dist: openpyxl
32
- Requires-Dist: xlrd
33
- Requires-Dist: matplotlib
34
- Requires-Dist: seaborn
35
- Requires-Dist: loess
36
- Requires-Dist: statsmodels
37
- Requires-Dist: scipy
38
- Requires-Dist: scikit-learn
39
- Requires-Dist: pymannkendall
40
- Requires-Dist: umap-learn
41
- Requires-Dist: pynndescent
42
27
 
43
28
 
44
29
  *mapdata.py* is a data explorer for data sets containing geographic coordinates. Data can be read from a CSV file, spreadsheet, or database. Both a map and a data
@@ -24,8 +24,8 @@
24
24
  #
25
25
  # ==================================================================
26
26
 
27
- version = "3.20.0"
28
- vdate = "2026-03-09"
27
+ version = "3.22.0"
28
+ vdate = "2026-03-31"
29
29
 
30
30
  copyright = "2023-2026"
31
31
 
@@ -99,6 +99,7 @@ try:
99
99
  mk_available = True
100
100
  except:
101
101
  mk_available = False
102
+ import kneeliverse
102
103
 
103
104
 
104
105
  # Default name of configuration file. Files with other names may be read.
@@ -2361,6 +2362,41 @@ def list_mse(y):
2361
2362
  # This computes the MSE for differences between elements of the list and 1.0
2362
2363
  return sum([(s-1)**2 for s in y])/len(y)
2363
2364
 
2365
+ def elbow_kneeliverse(rmses):
2366
+ # Returns the x value of the elbow
2367
+ pts = np.array(list(zip(list(range(1, len(rmses)+1)), rmses)))
2368
+ return kneeliverse.kneedle.knee(pts)
2369
+
2370
+ class LinePoints(object):
2371
+ # For calculation of elbow inflection using `kneedle` algorithm:
2372
+ # maximum distance of point from line.
2373
+ def __init__(self, x1, y1, x2, y2):
2374
+ self.yd = y2 - y1
2375
+ self.xd = x2 - x1
2376
+ self.xyterm = x2 * y1 - y2 * x1
2377
+ self.denom = math.sqrt(self.yd**2 + self.xd**2)
2378
+ def point_dist(self, xx, yy):
2379
+ return abs(self.yd * xx - self.xd * yy + self.xyterm) / self.denom
2380
+ def signed_point_dist(self, xx, yy):
2381
+ # Positive values are below the line, negative values above.
2382
+ return (self.yd * xx - self.xd * yy + self.xyterm) / self.denom
2383
+
2384
+ def kneedle_maxdist(rmses):
2385
+ xs = list(range(1, len(rmses)+1))
2386
+ lp = LinePoints(xs[0], rmses[0], xs[-1], rmses[-1])
2387
+ dists = [lp.signed_point_dist(xs[i], rmses[i]) for i in range(1,len(rmses)-1)]
2388
+ return dists.index(max(dists)) + 2
2389
+
2390
+ def elbow(rmses, eucdists):
2391
+ # Returns the elbow in the list of RMSE or Euclidean distance values.
2392
+ if len(rmses) < 3:
2393
+ return len(rmses)
2394
+ kd_rmse_em = max(kneedle_maxdist(rmses), kneedle_maxdist(eucdists))
2395
+ if kd_rmse_em < 5:
2396
+ return kd_rmse_em
2397
+ return elbow_kneeliverse(rmses)
2398
+
2399
+
2364
2400
  def iterate_nmf(D, n_em, max_iterations=200, mse_goal=0.00001):
2365
2401
  # Performs NMF on D until the row sums of the W matrix are all (approximately) 1.0.
2366
2402
  nmf_model1 = NMF(n_components=n_em, solver='mu', max_iter=500)
@@ -6745,6 +6781,15 @@ class UniqueValuesDialog(Dialog):
6745
6781
  self.data_labels = None
6746
6782
  self.dlg.bind("<Control-s>")
6747
6783
 
6784
+ # Top controls
6785
+ self.sel_only_var, self.sel_only_ck = add_sel_only(self.ctrl_frame, 0, 0, self.q_recalc)
6786
+ self.indiv_var = tk.StringVar(self.ctrl_frame, "0")
6787
+ indiv_ck = ttk.Checkbutton(self.ctrl_frame, text="Individually", command=self.q_recalc, variable=self.indiv_var,
6788
+ onvalue="1", offvalue="0")
6789
+ indiv_ck.grid(row=0, column=1, sticky=tk.W, padx=(6,3), pady=(3,3), columnspan=None)
6790
+ self.ctrl_frame.columnconfigure(0, weight=0)
6791
+ self.ctrl_frame.columnconfigure(1, weight=1)
6792
+
6748
6793
  # The content_frame encompasses the two panes of the variable frame and the content frame
6749
6794
  frame_panes = ttk.PanedWindow(self.content_frame, orient=tk.HORIZONTAL, width=600)
6750
6795
  frame_panes.grid(row=0, column=0, sticky=tk.NSEW)
@@ -6753,7 +6798,7 @@ class UniqueValuesDialog(Dialog):
6753
6798
  var_frame = tk.Frame(frame_panes, width=250, borderwidth=2, relief=tk.RIDGE)
6754
6799
  var_frame.grid(row=0, column=0, sticky=tk.NSEW)
6755
6800
  var_frame.rowconfigure(0, weight=1)
6756
- var_frame.columnconfigure(0, weight=1)
6801
+ var_frame.columnconfigure(0, weight=1, minsize=200)
6757
6802
  frame_panes.add(var_frame, weight=1)
6758
6803
  # Add multi-select list of variables to the leftmost pane
6759
6804
  varvals = [[v] for v in self.variables]
@@ -6787,20 +6832,48 @@ class UniqueValuesDialog(Dialog):
6787
6832
 
6788
6833
  def q_recalc(self, *event, get_data=True):
6789
6834
  self.clear_output()
6790
- if len(self.column_table.selection()) > 0 and get_data:
6791
- self.recalc()
6835
+ if len(self.column_table.selection()) > 0:
6836
+ self.get_data()
6837
+ if self.rawdataset is not None and len(self.rawdataset[0]) > 0:
6838
+ self.recalc()
6792
6839
 
6793
- def recalc(self):
6794
- column_list = []
6840
+ def get_data(self):
6841
+ # Get the selected data into 'dataset'
6842
+ self.rawdataset = None
6843
+ self.colnames = []
6795
6844
  for sel_row in self.column_table.selection():
6796
6845
  datarow = self.column_table.item(sel_row)["values"]
6797
- column_list.append(datarow[0])
6798
- dbcols = db_colnames(column_list)
6799
- colstr = ",".join(dbcols)
6800
- sqlcmd = f"select distinct {colstr}, count(*) as nrows from mapdata group by {colstr} order by {colstr};"
6801
- cur = data_db.cursor()
6802
- self.dataset = cur.execute(sqlcmd).fetchall()
6803
- self.data_labels = column_list + ["Count"]
6846
+ self.colnames.append(datarow[0])
6847
+ if len(self.colnames) > 0:
6848
+ # Get either only the selected data or all data.
6849
+ dataset = chosen_dataset(self.parent, self.colnames, self.sel_only_var.get()=='1')
6850
+ if dataset is None or len(dataset[0]) == 0:
6851
+ self.rawdataset = None
6852
+ self.colnames = None
6853
+ else:
6854
+ self.rawdataset = dataset
6855
+
6856
+ def recalc(self):
6857
+ if self.indiv_var.get()=='1':
6858
+ counts = dict(zip(self.colnames, [0 for _ in range(len(self.colnames))]))
6859
+ for i,col in enumerate(self.colnames):
6860
+ counts[col] = len(set([x for x in self.rawdataset[i] if x is not None and str(x) != '']))
6861
+ self.dataset = list(counts.items())
6862
+ self.data_labels = ["Variable", "Count"]
6863
+ else:
6864
+ counts = {}
6865
+ ds = columns_to_rows(self.rawdataset)
6866
+ for row in ds:
6867
+ trow = tuple(row)
6868
+ if trow not in counts.keys():
6869
+ counts[trow] = 1
6870
+ else:
6871
+ counts[trow] += 1
6872
+ self.dataset = [list(k) for k in counts.keys()]
6873
+ vals = list(counts.values())
6874
+ for i in range(len(counts)):
6875
+ self.dataset[i].append(vals[i])
6876
+ self.data_labels = self.colnames + ["Count"]
6804
6877
  tframe, tdata = treeview_table(self.values_frame, self.dataset, self.data_labels)
6805
6878
  tframe.grid(row=0, column=0, sticky=tk.NSEW)
6806
6879
  self.dlg.bind("<Control-s>", self.save_data)
@@ -13656,10 +13729,10 @@ class NMFUnmixingDialog(Dialog):
13656
13729
  frame_panes.grid(row=0, column=0, sticky=tk.NSEW)
13657
13730
 
13658
13731
  # Variable frame for list of quantitative columns/variables
13659
- var_frame = tk.Frame(frame_panes, borderwidth=2, relief=tk.RIDGE)
13732
+ var_frame = tk.Frame(frame_panes, width=250, borderwidth=2, relief=tk.RIDGE)
13660
13733
  var_frame.grid(row=0, column=0, sticky=tk.NSEW)
13661
13734
  var_frame.rowconfigure(0, weight=1)
13662
- var_frame.columnconfigure(0, weight=1, minsize=200)
13735
+ var_frame.columnconfigure(0, weight=1)
13663
13736
  frame_panes.add(var_frame, weight=1)
13664
13737
 
13665
13738
  # Maybe add a dropdown to select the row ID variable if there are multiple.
@@ -13863,21 +13936,12 @@ class NMFUnmixingDialog(Dialog):
13863
13936
  # Diagnostics: Total residual, RSS, AIC, RMSE, Frobenius norm of matrix difference, K-L divergence
13864
13937
  diagnostics.append([em_no, fp_display(arraysum(fit_ds)-arraysum(ds), 4), fp_display(fit_rss,5),
13865
13938
  fp_display(fit_aic,4), fp_display(fit_rmse,4), fp_display(frobnorm,4), fp_display(kl_div,3)])
13866
- if len(rmses) > 1:
13867
- rmse_diffs = [rmses[i] - rmses[i+1] for i in range(len(rmses)-1)]
13868
- sel_em = rmse_diffs.index(max(rmse_diffs))+2
13869
- if len(rmse_diffs) > 2:
13870
- rmse_diffs2 = [rmse_diffs[i] - rmse_diffs[i+1] for i in range(len(rmse_diffs)-1)]
13871
- sel_em2 = rmse_diffs2.index(max(rmse_diffs2))+2
13872
- if sel_em != max_ems-1:
13873
- sel_em = sel_em2
13874
- else:
13875
- sel_em = rmse_diffs.index(max(rmse_diffs))+2
13876
- self.em_var.set(sel_em)
13877
- sel_em_index = sel_em - 1
13939
+ if len(rmses) > 2:
13940
+ sel_em_index = elbow(rmses, frobs) - 1
13878
13941
  else:
13879
- self.em_var.set(1)
13880
- sel_em_index = 0
13942
+ sel_em_index = length(test_ems) - 1
13943
+ sel_em = test_ems[sel_em_index]
13944
+ self.em_var.set(sel_em)
13881
13945
  self.em_sel["values"] = test_ems
13882
13946
  self.em_sel["state"] = tk.NORMAL
13883
13947
  W, H = unmixes[sel_em_index]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mapdata
3
- Version: 3.20.0
3
+ Version: 3.22.0
4
4
  Summary: An interactive map and table explorer for geographic coordinates in a spreadsheet, CSV file, or database that includes data plotting and statistical summaries
5
5
  Home-page: https:/hg.sr.ht/~rdnielsen/mapdata
6
6
  Author: Dreas Nielsen
@@ -24,21 +24,6 @@ Classifier: Topic :: Scientific/Engineering
24
24
  Requires-Python: >=3.8
25
25
  Description-Content-Type: text/markdown
26
26
  License-File: LICENSE.txt
27
- Requires-Dist: tkintermapview
28
- Requires-Dist: pyproj
29
- Requires-Dist: jenkspy
30
- Requires-Dist: odfpy
31
- Requires-Dist: openpyxl
32
- Requires-Dist: xlrd
33
- Requires-Dist: matplotlib
34
- Requires-Dist: seaborn
35
- Requires-Dist: loess
36
- Requires-Dist: statsmodels
37
- Requires-Dist: scipy
38
- Requires-Dist: scikit-learn
39
- Requires-Dist: pymannkendall
40
- Requires-Dist: umap-learn
41
- Requires-Dist: pynndescent
42
27
 
43
28
 
44
29
  *mapdata.py* is a data explorer for data sets containing geographic coordinates. Data can be read from a CSV file, spreadsheet, or database. Both a map and a data
@@ -1,15 +1,16 @@
1
- tkintermapview
2
- pyproj
3
1
  jenkspy
2
+ kneeliverse
3
+ loess
4
+ matplotlib
4
5
  odfpy
5
6
  openpyxl
6
- xlrd
7
- matplotlib
7
+ pymannkendall
8
+ pynndescent
9
+ pyproj
10
+ scikit-learn
11
+ scipy
8
12
  seaborn
9
- loess
10
13
  statsmodels
11
- scipy
12
- scikit-learn
13
- pymannkendall
14
+ tkintermapview
14
15
  umap-learn
15
- pynndescent
16
+ xlrd
@@ -9,7 +9,7 @@ symbol_files = glob.glob("mapdata/symbols/16x16/*.xbm") + glob.glob("mapdata/sym
9
9
  glob.glob("mapdata/symbols/24x24/*.xbm") + glob.glob("mapdata/symbols/28x28/*.xbm")
10
10
 
11
11
  setuptools.setup(name='mapdata',
12
- version='3.20.0',
12
+ version='3.22.0',
13
13
  description="An interactive map and table explorer for geographic coordinates in a spreadsheet, CSV file, or database that includes data plotting and statistical summaries",
14
14
  author='Dreas Nielsen',
15
15
  author_email='cortice@tutanota.com',
@@ -18,7 +18,7 @@ setuptools.setup(name='mapdata',
18
18
  scripts=['mapdata/mapdata.py'],
19
19
  data_files=[('symbols', symbol_files), ('config', ['mapdata/configfile/mapdata.conf'])],
20
20
  license='GPL',
21
- install_requires=['tkintermapview', 'pyproj', 'jenkspy', 'odfpy', 'openpyxl', 'xlrd', 'matplotlib', 'seaborn', 'loess', 'statsmodels', 'scipy', 'scikit-learn', 'pymannkendall', 'umap-learn', 'pynndescent'],
21
+ install_requires=['tkintermapview', 'pyproj', 'jenkspy', 'odfpy', 'openpyxl', 'xlrd', 'matplotlib', 'seaborn', 'loess', 'statsmodels', 'scipy', 'scikit-learn', 'pymannkendall', 'umap-learn', 'pynndescent', 'kneeliverse'],
22
22
  python_requires = '>=3.8',
23
23
  classifiers=[
24
24
  'Development Status :: 5 - Production/Stable',
File without changes
File without changes
File without changes
File without changes