forked from OpenMap-java/openmap
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
4777 lines (3725 loc) · 207 KB
/
CHANGELOG
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
2015-08-07 Don Dietrick <[email protected]>
* Tagged OpenMap 5.1.12
* Added the scaleOverCoverage property to the RpfLayer, and
modifying the RpfTocHandler to use it when determining the best
TOC entry for the current map query. It's true by default, but
when used for tiles (wmsservlet), the RpfLayer performs
better (fills in some empty tiles) with data it may have for
different scales.
* Updated WMSPlugIn query to use correct CRS parameter for v1.3
queries.
2015-07-20 Don Dietrick <[email protected]>
* Tagged OpenMap 5.1.11
* Added flag (defaulting to true) to RpfTocHandler to tell it to
ignore zones of entries when evaluating coverage for projection.
This fix allows the layer to avoid choosing only entries that
match the projection zone, even though other options would provide
better coverage. Not a problem since subframes are scaled and
warped as necessary to match projection. This fixes the annoying
flipping coverage problem when panning N/S and crossing zone
boundaries, when you are zoomed out past the ideal scale for a
particular chart type.
2015-03-12 Don Dietrick <[email protected]>
* Added bug fixes, including equalty check to avoid infinite loop
in EmbeddedScaleDisplayPanel, Moving to local variable in
OMPoly.generate for thread safety, updating WMSPlugIn to handle
WMS 1.3 requests. Updated OMRaster.computePixels length check.
2015-02-06 Don Dietrick <[email protected]>
* Tagged OpenMap 5.1.10
2015-01-22 Don Dietrick <[email protected]>
* Updated ProjectionFactory to use getProjClassForName instead of
trying to make a class from a general string. This way, pretty
names can be used in the properties to set the default projection
type of the app. Updated to Logger.
2015-01-21 Don Dietrick <[email protected]>
* Synchronization updates from Andrew Lloyd for OMGraphicList,
properly unsynchronizing on methods and synchronizing on
iterations.
2015-01-07 Don Dietrick <[email protected]>
* Updated projections to pan using Rhumb calculations instead of
GreatCircle calculations, which was causing a slight skew to the
equator when going east-west.
2014-12-18 Don Dietrick <[email protected]>
* Tagged OpenMap 5.1.9
* Fixed the OMScalingRaster, was drawing full-sized image when the
bounds said it should be totally off the map.
2014-12-15 Don Dietrick <[email protected]>
* Tagged OpenMap 5.1.8
* Modified the OMGraphicHandlerLayer threading and locking code.
* Added ImageWarp methods to make it easier to use as a standalone
object.
* Updated precision for Planet NM constants.
* Updated the MapBean and MapHandler listener handling code.
* Removed the iis directory and WebService. It will no longer be
maintained or tested.
2014-11-19 Don Dietrick <[email protected]>
* Tagged OpenMap 5.1.7
* Updated the MapBean, BufferedMapBean, BufferedLayerMapBean and
BufferedLayer to handle flashing better, especially with
background layers. Also fixed a problem in BufferedLayer where it
was resetting the rotation angle in the projection, causing all
the icons and labels to rotate with the map instead of staying
straight up.
* Updated com.bbn.openmap.util.WebBrowser to be an abstract class
that the InformationDelegator uses to launch web pages. If no
WebBrowser implementation is specified, the InformationDelegator
uses the simple MiniBrowser in OpenMap. If the BrowserLauncher2
jar file is in the classpath the new
com.bbn.openmap.util.BrowserLauncher2WebBrowser class can be
specified in the InforamtionDelegator properties to be used for
displaying websites. Removed the old BrowserLauncher code.
* Updated import statements to remove unused classes.
2014-10-17 dietrick <[email protected]>
* Tagged OpenMap 5.1.6
* Modified Layer, BufferedLayer, BufferedLayerMapBean and MapBean
to eliminate the flashing effect caused when faster-responding
layers were paired with slower-responding layers, and the map
background would be seen briefly. Now, when the
BufferedLayerMapBean is used, its BufferedLayer is consulted to
make sure all 'background' layers are ready before repaint()
requests are forwarded to the AWT mechanism. Layers are ready
when repaint() is called on them.
2014-10-16 dietrick <[email protected]>
* Tagged OpenMap 5.1.5
* Removed sinh from MoreMath, the standard Math function should be
used instead. Updated Mercator to use it. Updated
OMGraphicHandlerLayer threading model to handle workerComplete()
better. There were situations where a canceled worker could
result in two or more more threads locking up on prepare().
OMList updated so that processAllGraphics is true by default, was
causing an extra loop through graphics to check visibility for
sublists. Updated iterator methods to iterate over shallow copy
of graphics.
* Added check in OMWarpingImage.render() to check isRenderable().
2014-09-18 dietrick <[email protected]>
* Tagged OpenMap 5.1.4
* Updated OpenMapFrame to use Height, Width properties defined the
same way as in the Environment class. The OpenMapFrame no longer
looks for a PropertyHandler in the MapHandler, the OpenMap class
will provide the properties to it right after it's created. The
OpenMapFrame now consistently follows the height/width settings,
and the openmap.properties Height/Width properties have proper
capitalization.
The PropertyHandler.Builder class has a build method, which is now
used by updated Main and OpenMap classes. OpenMap and Main now
have Logger member variables, moving away from Debug.
* Updated OMGraphicAdapter to handle TexturePaint masks property
during Serialization. The SerializableTexturePaint was added to
help with this.
* Modified OMScalingRaster so local handles to clipRect are used
for positioning, to help with multithreaded environment. The old
way was causing NPE to appear under certain conditions. Local
handles were also implemented in the NavMouseModes for the same
reason.
* Updated BLMapBean has been updated to use an almost entirely
transparent background so that semi-transparent layers will render
property. Previously, semi-transparent layers would not appear.
* Updated RPF catalog with entries from latest version of specification.
2014-07-28 dietrick <[email protected]>
* Tagged OpenMap 5.1.3
2014-07-25 dietrick <[email protected]>
* Modified OMRasterObject/OMScalingRaster/OMScalingIcon image
handling. The projected image is no longer held in memory.
Instead, the transform, created in generate(), is saved and
applied when rendering. OMScalingIcon figures out when the image
doesn't need to be scaled and just draws it in that case.
* Modified BufferedMapBean, BufferedLayer and MapBean, adjusting
the image buffers to be cleaned and reused when the size doesn't
change.
* Some layers have been tweaked - OMGraphicHandlerLayer will print
out an information message if memory exceptions occur,
SimpleAnimationLayer moves the sprites a bit more.
2014-07-07 dietrick <[email protected]>
* Tagged OpenMap 5.1.2
* AbstractProjectionChangePolicy.java change recent modifications
so that if a layer's previous and current OMGraphicList are null,
repaint isn't called on the layer. Previously, empty
OMGraphicLists prevented repaint from being called too, and that
has bad side-effects.
2014-06-18 dietrick <[email protected]>
* Tagged OpenMap 5.1.1
* Made some memory usage improvements to the MapBean rotation
components, the rotated image buffer is reused under most
conditions. Added more cleanup to BufferedImageRenderPolicy.
* Added comments/README to the WMS servlet components.
* Modified the SpatialIndex to use a separate ArrayList for entry
traversal when responding to a projection change.
2014-05-14 dietrick <[email protected]>
* Tagged OpenMap 5.1.0 - Since the API signatures have changed for
some components, the minor version number is being
increased. Details following.
* Updated the MapBean (and subclasses) to handle rotation better.
When a rotation angle is set on the MapBean, it starts to use a
RotationHelper (inner class) to create a new image buffer for a
projection large enough to cover the corners of the map. The
RotationHelper handles the rotated map. The paintChildren()
method has been updated to only render layers. Rendering of the
PaintListeners and Border are handled by separate methods called
from the paint() method. To get the map to render fully when
rotated, the clip area is disabled when the map is rotated.
The MapBean has new methods to use when working with rotation.
The MapBean inverse method gives you map coordinates taking into
account rotation. The getRotatedProjection provides the
projection being sent to the layers at any given time, while
getProjection always provides the original projection. The best
place to see how these methods are used is to check out the
listenerPaint methods in the MouseModes.
OMText and OMScalingRaster OMGraphics pay attention to the
OMGraphicConstants.NO_ROTATE attribute. If that attribute is set,
they will always appear at their rotated angle relative to the
MapBean boundaries. OMTextLabelers always have that attribute
set, so they will automatically correct for rotation.
* Updated Projections to have a rotationAngle member variable.
This member variable is only present to pass the setting from the
MapBean on to OMGraphics, in case they want to modify themselves
with regard to rotation. Projection objects themselves don't use
this member variable. The panning method in Projections was also
fixed. There was an issue with the pan command for directions
other than the 8 pre-defined directions. Now panning works for
all directions, and when the map is rotated.
* Added AbstractProjectionChangePolicy to handle common projection
change policy functionality. IMPORTANT: The OMGraphicHandlerLayer
SwingWorker has been modified so it doesn't automatically call
repaint on the layer when the thread is complete. The
AbstractProjectionChangePolicy handles calling repaint() on the
layer, after determining the layer has something to paint. If a
layer (before a projection change had no OMGraphics to paint, and
after the projection change still doesn't have OMGraphics to
paint) isn't contributing to the map, repaint() will not be called
on it. You can override this behavior by setting a different
ProjectionChange policy on the layer.
* Updated the OMGraphicAdapter (base class for all OMGraphics)
setLabelLocation method signatures so the projection is also
passed in. This allows OMTextLabelers to figure out how to not be
affected by map rotation. The old method signatures have been
deprecated.
* Updated the MouseModes to handle rotation. They have been
modified to be PaintListeners and paint directly on top of the map
instead of using XOR drawing techniques. Their code has been
refactored and their API signatures have changed slightly. TODO:
There is a known issue with the PanMouseMode map rendering when
the map is rotated. The current work-around is to have the
AzimuithPanner enabled for all projections when the map is
rotated. I've also seen a issue with the
NavMouseModes/DistanceMouseMode rendering when the 1) map is
rotated 2) on a Mac and 3) the ToolBar is visible. The rendered
graphics are offset lower than they should be (height of ToolBar).
* Modified the PaintListener interface so the source object is
also provided in the listenerPaint method signature.
* Updated EditableOMPoly setGrabPoints methods to be safer when
dealing with poly coords and projections.
2014-03-13 dietrick <[email protected]>
* Tagged OpenMap 5.0.4
2014-03-12 dietrick <[email protected]>
* Added a GUI button to the MapTileLayer to delete the tile cache
on disk for those layers using a ServerMapTileFactory. Disabled
for layers solely relying on a single map tile directory accessed
locally.
* Improved the property handling of the ommaptileservlet so that
the web.xml specifies a property directory instead of the
properties files themselves. Moving a new properties file into
the directory (which specifies a new tile set) and reloading the
servlet will load the new tileset or any changes. Update the
MapTileMaker to implement EmptyTileHandler, which allows
ommaptileservlet to generate tiles on the fly when they are
needed, caching them for later requests.
* Fix for Geo.azimuth(Geo) method, which provided incorrect
answsers moving away from the equator. Replaced with the
GreatCircle.sphericalAzimuth algorithm while taking advantage of
Geo's ellipsoid model.
* The com.bbn.openmap.dataAccess.shape package has some bug fixes,
including some addition null pointer exception checks, a fix for
off-by-one problem with extents, polyline/polygon M types being
incorrectly sent to the Z methods.
* WholeWorldTileHandler has improved source directory handling.
2013-11-25 dietrick <[email protected]>
* Tagged OpenMap 5.0.3
* Added delete() method to FileUtils.
2013-11-24 dietrick <[email protected]>
* OMGraphic interface has been updated with isRenderable, draw and
fill methods that take a Shape object as an argument. The old
implementation methods are no longer synchronized. For
BasicGeometry, the getShape() and setShape() methods are
synchronized and all instances of direct access to the shape
object have been replaced with calls to these methods. All render
methods in OMGraphic implementations have been updated to use one
getShape() call, and then use that handle to a shape for checks
and drawing. This greatly improves rendering performance. The
OMList implementations that build a single shape from parts have
been updated to have more efficient algorithms for building
shapes.
* Updated the SimpleAnimationLayer for more control over the
sprites. You can set the number of sprites for a batch add, the
timer was changed to a java.util.Timer that uses a Task for
updating the sprites. The GUI was updated to use GridBagLayout
and has some new controls. Deleted the
com.bbn.openmap.graphicLoader.AnimationTester class, it was
outdated.
* Updated LayersMenu to use an object lock for the layer with the
menu entries.
2013-11-12 dietrick <[email protected]>
* Tagged OpenMap 5.0.2
* Created the MapTileRequester interface, which lets the
MapTileFactory ask it whether it should keep working. If
provided, the StandardMapTileFactory will use the requester as
tiles are fetched to determine if the tile group fetch is still
relevant. The MapTileRequester interface replaces the
MapTileFactory repaintCallback member variable.
* Reverted the Geo.intersect method to use the former algorithm.
The newer algorithm was faulty and broke code.
* Updated MapTileLayer to implement the mapTile MapTileRequestor
interface, which also uses the new wrapItUp flag discussed below.
The repaintCallback repaint() calls made in the MapTileFactory
were moved back into this layer, using the MapTileRequester
notifications.
* Updated layer classes in the com.bbn.openmap.layer.test
package. The GeoIntersectionLayer was reformatted, and the
GeoTestLayer was restuctured to use more regular data.
* Added a boolean flag, wrapItUp, to the OMGraphicHandlerLayer.
Means something slightly different than interruptable. WrapItUp
gets set to true if another SwingWorker is queued to run, due to
another doPrepare() call or projection change. If interruptable
is set to true, the current SwingWorker is killed, and the state
of some things might be in flux. If a layer is marked as
uninterruptable to avoid this state of flux (think loading image
files), the wrapItUp flag lets the layer decide when to stop
working if it wishes.
* Added check to OMScalingRaster for lastProjection, so a clone of
the projection is only made if it changes.
* Added threading to FileUtils chooser methods, so if they aren't
called in the event thread they will still appear.
2013-08-19 dietrick <[email protected]>
* Added the GoogleMapTileFactory as an example of how to extend
the MapTileFactory to contact different services. Added the
ability for MapTileLayer to display map data attribution.
2013-07-27 dietrick <[email protected]>
* Moved default LINETYPE for shape files from GREAT_CIRLCE to
STRAIGHT. That should speed things up a bit.
* Added com.bbn.openmap.layer.learn.SimpleAnimationLayer, a little
tutorial example of doing animation on OpenMap. Borrows a lot for
the AnimationTester, which was also refreshed.
* Added OMGraphicHandler to the interfaces that
OMGraphicHandlerLayer implements. It used to implement that
interface, and should have been, obviously.
* Fixed off-by-one errors in the AreaHandler.
2013-07-03 dietrick <[email protected]>
* Fixed some JavaDoc errors, added update to Gnomonic Projection.
2013-07-03 dietrick <[email protected]>
* Released OpenMap 5.0.1
2013-06-19 dietrick <[email protected]>
* Added NPE checks to BufferedImageRenderPolicy and OMScalingRaster.
* Added width acessors to OMText. Added Executor methods to
TaskService to allow customization and control for Layer
threading.
2013-05-20 dietrick <[email protected]>
* Updates to OMScalingRaster to gracefully handle memory
exceptions if the scaled image is too big. Updated javadocs and
java comments in these classes, added Logger for ScaleFilterLayer.
* Refactored the LayerHandler so it uses a List<Layer> internally
to manage Layers. Created the LayerConfigurationListener interface
and LayerConfigurationListenerSupport object, both of which are
used by the LayerHandler to pre-notify components when the active
layers for the application are about to change. The
LayerConfigurationListener has the opportunity to make
modifications to the layer configuration, or change visibility of
other layers, etc. Added the BasicLayerConfigurationListener, an
example component that changes the projection of the MapBean to
CADRG if an RpfLayer is active.
2013-04-13 dietrick <[email protected]>
* Cleaned up debugging. Updated LOS code API for better control.
Updated WMSPlugIn setProperties so the current values aren't
zeroed out of they aren't set.
2013-04-23 dietrick <[email protected]>
* Moved the smarts for zoom levels out of the MapTileMaker class
and put them in the MapTileCoordinateTransform classes. Added
AbstractMapTileCoordinateTransform class to merge similar methods
and functionality for existing mtct classes. Updated other
classes to call mtc functions instead of MapTileMaker static
functions.
2013-04-16 dietrick <[email protected]>
* Added RelayMapTileSet for MapTileServlet, which fetches tiles
from a remote server and caches them locally. Updated
TerrainLayer to eliminate some verbose error messages.
* Added Kevin's (kpfarr) fix to RpfTocHandler for merging entry
coverages properly.
2013-03-02 dietrick <[email protected]>
* Added the ClckOrDrgUndefinedState to the omGraphics.editable
package, which is now the super class of LineUndefinedState,
RectUndefinedState and CircleUndefined state. Lines, Rects and
Circles can now be defined with a click and mouse move to next
point, or with a press and drag to the next point, just like
polys.
2013-03-01 dietrick <[email protected]>
* Fixed the ImageTile outline behavior on projection changes.
Fixed bug in GeoTIFF code introduced via a FindBugs modification,
and tweaked the ImageTileLayer GUI to handle list selection
better.
2013-02-28 dietrick <[email protected]>
* Added some data/vpf vmaplv0 configuration files with more
instructions on how to use the VPFFeatureLayer.
* Fixed the VPF attribute fetching with proper indexes. The VPF
package api changed in a deep section, to allow the proper feature
id to be passed to the place where it's needed to fetch
attributes.
* Added intersets method to DataBounds. Can be tested with new
BoundsTestLayer in layer.test package.
* Updated SwingWorker and PooledSwingWorker to use FutureTask
objects, reducing the number of threads that are created. Updated
OMGraphicHandlerLayer.workerComplete to take a ISwingWorker in its
signature.
* Modified DemoLayer to have separate OMGraphicList for storage,
loading aux OMGraphicList for painting.
2013-02-27 dietrick <[email protected]>
* Made a bunch of adjustments as recommended by FindBug, regarding
null pointer checks, equality checks, stuff like that.
* Added AzimuthPanner abstract class with Standard and Shapefile
subclasses. This class is used by the PanMouseMode and
OMMouseMode for panning when the projection is Azimuthal. The
modes used to translate the map image, the new class renders
things instead. The AzimuthPanner.Standard is used if a shapefile
for the mousemode is not defined.
* Modified how the DrawingToolLayer tool buttons react to
toggling. Toggling the tool button will deactivate the drawing
tool, returning mouse control to the application.
* Updated the mapTile package, allowing the frames to be defined
by a regex that fits how to ask for tiles from a server or
directory location. Locations can include {x}{y}{z} where x,y,z
are x and y tile coordinates at z zoom level. This regex can be
defined as the rootDir of a MapTileLayer.
* Fixed the BeanBox example, since it was moved. Updated the
manifest.txt to remove outdated beans.
2012-01-27 dietrick <[email protected]>
* Added the maptileservlet package. This servlet package provide
map tiles and can be used with the MapTileLayer using the
ServerMapTileFactory, and can also be easily be used with Leaflet.
* Misc updates to remove extra semi-colons and fixed some
compiling warnings.
* Modified OMArc to take a Point2D object instead of a
LatLonPoint. This allows it to be used with the Cartesian
projection.
* Modified WholeWorldTileHandler to have more control over how it
creates jar files holding map tiles. Can now create specific
subjars, control whether the master jar gets created, etc.
* Added TileMillMapTileFactory to
com.bbn.openmap.dataAccess.mapTile package, and also added the
sqlite jar to the ext directory. This MapTileFactory can read the
output tile database files created using the TileMill application.
* Tweaked the API, got rid of new Grey*TileFactory classes in the
com.bbn.openmap.dataAccess.mapTile package, created new
TileImagePreparer and added Grey and standard versions of that
instead. Now the StandardMapTileFactory and ServerMapTileFactory
can have different classes handing images, and those classes can
be swapped at runtime.
* Fixed build problems when ext directory was missing.
2011-12-23 Knox Rogers <[email protected]>
* OpenMap 5.0 released
2011-12-06 dietrick <[email protected]>
This entry is a summary of the changes made to OpenMap between the
4.6.5 release and the 5.0 release. The API has changed
significantly for the Projection classes, and that's the main
reason for the major version change.
The Projection classes used to translate decimal degree lat/lon
point objects to java.awt.Point x/y pixel coordinates. The new
Projection classes make translations using Point2D objects.
LatLonPoint has been moved inside the com.bbn.openmap.proj.coords
package, and now extends Point2D. The pixel locations returned
from the Projection are also Point2D objects. If you've written
any code that calls Projection methods, you may have to modify
that code to work with the changes.
Throughout the code, there have been changes to incorporate
Generic types, utilizing StringBuilder methods, moving from the
com.bbn.openmap.util.Debug class to the Java logging mechanism,
implementing equals() and hashcode() methods.
OM5 requires the Java 5 runtime.
* com.bbn.openmap
Updated BufferedMapBean to handle panning better, shifting current
map image appropriately until the layers react to the projection
change.
The Layer class has been updated to have a GeoCoordTransformation
member variable, for data that isn't stored in decimal degree
lat/lon coordinates.
MapBean updated to have a handle on its ProjectionFactory.
Update the MapHandler class with generified methods.
Added the notion of isolation to the MapHandlerChild, so it will
ignore BeanContext events it receives from other BeanContext
objects that it doesn't know about.
Updated PropertyHandler so it's not tied to the openmap.properties file name.
* com.bbn.openmap.app
Added a couple of new application-type classes. The Main
application represents the new OpenMap app look, and it utilizes
the new OverlayMapPanel.
The TimeFrameApp uses the HotwashPanel and some of the new time
management components.
* com.bbn.openmap.app.example
Moved SimpleMap and SimpleMap2 here.
* com.bbn.openmap.dataAccess.cgm
Added components that all more sections of the CGM files to be
read, like constants, colormodel, colortable, marker
representation and marker size.
* com.bbn.openmap.dataAccess.mapTile
This new package deals with map image tiles, the kind that are
used in OpenStreetMap/Google/GDAL tiles, etc.
The MapTileFactory classes read tile sets for the MapTileLayer and
creates images for display on the map.
The StandardMapTileFactory reads tiles stored locally.
The ServerMapTileFactory can fetch tiles from a URL (where tiles
are stored under a root location plus z/x/y.png type location).
The ServerMapTileFactory will store the images it fetches locally
to reduce the load on the server. The
GreyStandard/ServerMapTileFactory classes convert the images to
greyscale.
The EmptyTileHandler classes tell the factory classes how to
handle missing tiles, whether to do nothing, create new tiles or
use a default tile to fill the area in.
The OpenStreetMap tiles are stored a little differently than tiles
that meet the TileMappingService configuration (like the tiles
GDAL creates). You can use the OSMMapTileCoordinateTransform for
OpenMap/OpenStreetMap tile sets, and the
TMSMapTileCoordinateTransform for GDAL image tile sets.
The MapTileMaker can create map tile sets from OpenMap layers.
The MapTileMakerComponent can be added to the OpenMap application
to visualy define and launch MapTileMaker tile creation.
* com.bbn.openmap.dataAccess.shape
Added a DbfTableModelFactory class that helps create DbfTableModel
for an EsriGraphicList when the data is read in.
Added ShapeGeoIndex, an ExtentIndex implementation created from a
shape file. This ExtentIndex can be used with the uses the
com.bbn.openmap.geo package components to discover intersections
with other extents (points, paths, regions, etc).
* com.bbn.openmap.event
Added two new sets of event objects. Added OMEvent class, which
is a object representing something that happens at a certain time.
The OMEvent class is accompanied by the OMEventComparator and
OMEventHandler, and some other components to aid in selection and
filtering of OMEvents. These component tie into the new
com.bbn.openmap.time components and TemporalOMGraphics.
Added Undo classes (UndoEvent, UndoStack, UndoStackSupport and
UndoStackTrigger). These components are currently used by the
drawing tool undo/redo capability, but can be used by any
component that wants to save and restore state.
Added the OMMouseMode, which is a combination of the PanMouseMode
and SelectionMouseMode. The behavior is similar to
standard/expected web map mouse behavior.
* com.bbn.openmap.examples
Removed this package. The beanbox example is now under
com.bbn.openmap.layer.beanbox. hello and crew packages were
obsolete, and the simple applications have been moved up to app.
* com.bbn.openmap.gui
Added the OverlayMapPanel, an extension of BasicMapPanel that
knows how to layer other components with the map so they appear as
if they are floating on it. The EmbeddedNavPanel and
EmbeddedScaleDisplayPanel are two components the OverlayMapPanel
uses. The DistQuickTool is used by the panel to quickly measure
distances on the map.
The HotwashPanel is a new BasicMapPanel that has sliders built
into it. It was created to house the new time controls and event
lists on the bottom and to the left.
The event subpackage contains components that manage and display
OMTime events.
* com.bbn.openmap.image.wms incorporated many changes from Tore
Haslet that added compatibility with WMS 1.3, including
capabilities queries and projection translations.
* com.bbn.openmap.layer.event
Added the EventLayer and supporting components. The EventLayer
handles TemporalOMGraphics and uses the new com.bbn.openmap.time
management components.
* com.bbn.openmap.layer.imageTile
Added the MapTileLayer. The layer uses the new
com.bbn.openmap.dataAccess.mapTile components to render
OpenStreetMap/GDAL/Google map tiles.
* com.bbn.openmap.layer
Updated OMGraphicHandlerLayer to utilize the new ISwingWorker classes.
* com.bbn.openmap.layer.policy
Added NullProjectionChangePolicy that does nothing when the
projection changes, and added the PanningImageRenderPolicy, to be
used by layers that want to redraw what they have when the
projection changes. A buffered image is reprojected and reused
until the layer can update for the new projection.
* com.bbn.openmap.layer.util
Added DataPathWanderer class, extending Wanderer, that finds valid
data paths for a data user. Base class for creating a data auto-finder.
* com.bbn.openmap.layer.vpf
Added VPFFeatureLayer and supporting classes. This layer uses
priorty files and GeoSym information/cgm files to order and render
features from VPF. New files added to share/data/vpf directory to
support DNC.
Added VPFFeatureInfoHandler that lets you get attribute
information for features. Configurable via properties. Can be
extended to display attribute in different ways. The
TTFeatureInfoHandler displays attributes in a tooltip.
* com.bbn.openmap.omGraphics
The OMGraphics have been updated to double precision.
OMGraphic is now an interface, with OMGraphicAdapter being the base class.
DrawingAttributes have new transfer methods that make it easier to
clone and copy settings. Added Builder class to make it easier to
make it more convenient to create and make settings on a new
instance.
Added GraphicUndefinedEditState to the editable subpackage, for
OMGraphics in the process of being defined by the drawing tool.
It's a state that defines when an OMGraphic is only partially
defined.
OMGraphicList and OMGeometryList extend OMList, which itself
implements the List interface. They are now iterable, and use
Generic Types to define what is held in them.
Added OMWarpingImage, which is a raster OMGraphicClass that warps
its image to the current OpenMap projection (during generate).
Added the time subpackage, which defines interfaces for OMGraphics
that change over time. TemporalOMPoint and TemporalOMScalingIcon
are two implementations of that interface.
Added ImageWarp class to the util subpackage, which does the
heaving lifting work of the OMWarpingImage.
Added RibbonMaker class to the util subpackage, which creates a
buffer area around a vector shape.
* com.bbn.openmap.proj
The proj package classes have undergone a significant API change,
as described in the summary above. For the top-level Proj class
and Projection interface, the Point references for projected
locations have been replaced with Point2D objects. The
LatLonPoint references have been replaced with Point2D references.
The old projection classes now extend the GeoProj class, and the
Point2D objects meant to indicate latitude/longitude points are
LatLonPoints.
There is a Cartesian projection for standard X/Y drawing. You can
use the OMShape object for drawing things in a Cartiesian
projection. Other OMGraphics will work too, but the lat/lon
coordinates are interpreted as x/y coordinates.
Deleted the ProjectionFactoryLoader and the View classes. The
ProjectionFactory is no longer a singleton, there's a different
ProjectionFactory for each MapBean, and each MapBean can have a
different set of Projections it can handle.
* com.bbn.openmap.proj.coords
All of the coordinate point classes and methods have been moved
here, including LatLonPoint and VHTransform. Updates to GCT
classes.
LatLonPoint was rewritten to inherit from Point2D, and is modeled
after that class with Float and Double implementations. Note that
overridden Point2D methods have (x,y) signatures, while
LatLonPoint.setLocation(lat, lon) methods have (y, x) signatures.
* com.bbn.openmap.time
Created new time package, moved older time components here just to
make them more application-friendly. Added components that
understand the notion of time bounds and managing the notion of a
point in time.
* com.bbn.openmap.tools.drawing
Updated OMDrawingTool to use UndoStack and triggers to handle edit
undos and redos.
* com.bbn.openmap.tools.symbology.milStd2525
Added SVGSourceFileReorganizer, a class that takes the
distribution package from DISA and flattens the files out into a
target directory, renaming them as needed for the
SymbolReferenceLibrary.
* com.bbn.openmap.util package
Added AbstractXMLParser class, a base class for XML parsing, wraps
the DefaultHandler java class.
Added Attributable interface, describing classes that can handle
an attribute map.
Added ClasspathHacker, which adds jars to classpath at runtime.
Added MGRSCoordInfoFormatter, which formats coordinates into MGRS format.
DataBounds updated to use Point2D objects, add method added.
Added DeepCopyUtil, which handles cloning propery. OMGraphics updated to use it.
FileUtils updated to have new zip writing algorithm, methods.
Added HashCodeUtil to assist in creating proper hash code values.
Added ISwingWorker interface and updated OMGraphicHandlerLayer to
use it, so other implementions could be used in the layer. Added
PooledSwingWorker, implementing a reuseable SwingWorker. Added
TaskService to manage SwingWorkers.
PropUtils added methods to create objects from property
list (standard openmap.properties paradigm). parseColor method
returns a Paint object instead of a Color object.
Updated Wanderer class to be able to handle exhaustive and
non-exhaustive searches.
Moved former com.bbn.openmap.layer.util.http/html/stateMachine
packages to this util package.
2009-03-26 Don Dietrick <[email protected]>
* Refined the DTED packages, removing duplicate classes in
com.bbn.openmap.layer.dted and having those classes refer to the
com.bbn.openmap.dataAccess.dted package contents. The
com.bbn.openmap.layer.dted.DTEDFrame has been changed to
DTEDSubframedFrame, and now extends the DTEDFrame class in
dataAccess.dted. The DTEDLayer is the main class in
com.bbn.openmap.layer.dted, and those classes use the
DTEDSubframedFrame. The
com.bbn.openmap.layer.dted.DTEDFrameCacheLayer uses the classes in
the com.bbn.openmap.dataAccess.dted package. The choice between
the two is memory usage (when DTED is used by other components it
can also be used by DTEDFrameCacheLayer) vs
speed (the DTEDLayer is faster).
2009-03-24 Don Dietrick <[email protected]>
* Added com.bbn.openmap.omGraphics.util.ImageWarp, which takes an
image file and warps it to fit a given projection. Can be created
with a image path or BufferedImage, takes a DataBounds or
WorldFile object to specify where the image is, and also takes a
GeoCoordsTransformation to handle preprojected images. Also added
the com.bbn.openmap.omGraphic.OMWarpingImage that wraps around an
ImageWarp object to display the image on the map as an OMGraphic.
* Modified the DataBounds object to provide height and width
calculations (deltas between max and mix), and can also have an
internal DataBounds object that serves as hard limits for added
values. The hard limits override any point values that may be
added.
* Simplified the OMApplet.html file, with simple APPLET tags.
* Removed com.bbn.openmap.LatLonPoint. The
com.bbn.openmap.proj.coords.LatLonPoint is the class to use now.
* Fixed problem where the ProjectionSupport thread continued to
run, preventing garbage collection of the MapPanel and all its
contents. That thread gets interrupted when the MapBean is
disposed. Added dispose() methods on MapPanel, MapBean,
ProjectionSupport, OpenMapFrame that release objects. Dispose
should be called on the MapHandler, and when OMComponents detect
they have been removed from the MapHandler in their findAndUndo
method, they should call dispose() on themselves if they have that
method.
* The ProjectionFactory is no longer a singleton. A
ProjectionFactory is expected to be placed in a MapHandler, where
it will attach itself to the MapBean and can be accessed through
the MapBean. If a ProjectionFactory is not set and requested from
the MapBean, the MapBean will create a ProjectionFactory with the
default set of ProjectionLoaders. The ProjectionFactoryLoader
class has been removed, and that functionality (creating
ProjectionLoaders from Properties) has been incorporated into the
ProjectionFactory. The ProjectionFactory should be created like
any other component added to the MapHandler, via the properties or
programmatically added to the MapHandler.
2009-03-14 Don Dietrick <[email protected]>
* OpenMap 5.0 released as beta via SVN repository. All further
changes will apply to version 5.0. OpenMap 5.0 requires Java 5
(jre 1.5.x).
* The com.bbn.openmap.proj.coords.LatLonPoint has been created
and it extends java.awt.Point2D. You can instantiate
LatLonPoint.Double and LatLonPoint.Float classes, just like
Point2D. Note that the Point2D methods follow the x, y ordering
of arguments, but that the setLocation() methods of LatLonPoint
follow the lat, lon ordering. The old LatLonPoint currently
extends the new LatLonPoint.Float object.
* The Proj/Projection class and interface are now based on
java.awt.Point2D objects. The GeoProj class extends Projection,
and Point2D objects in coordinate space are now LatLonPoints as
allowed with Generics. The Cartesian projection handles projected
data.
* The OMShape object is added to handle cartesian shapes, taking
java.awt.Shape objects and managed as an OMGraphic.
2009-03-05 Don Dietrick <[email protected]>
* OpenMap 4.6.5 released.
2009-02-27 Don Dietrick <[email protected]>
* The CSVTokenizer was updated to properly handle empty fields in
front and end of lines.
* The projection package was updated with the DatumShiftProjection
which wraps projections to provide datum shifting. The
CoordinateReferenceSystem has been updated to use new
GeoCoordTransformation objects for different projection types.
* For OMGraphics, the EditableOMPoly, OMGraphicList and OMText all
had minor bug fixes. Polygons are now re-editable after colors
are modified, OMGraphicLists had selection problems patched, and
OMText FontSizer setter was fixed.
* MapHandler was modified with an overriding remove method that
also checks to see if an object being removed was a
BeanContextMembershipListener. The parent class was adding such
objects to a special list when they were added, but not removing
them from that list when they were removed from the context. This
was causing a memory leak of sorts.
* Added MapBean.dispose() method, which cleans up the projection
support thread and releases lingering handles on layer objects.
ProjectionSupport also has dispose() method that is called to
clean up.
* Layer.setProperties() functionality was broken out to a
setLayerProperties() method so subclasses could override
setProperties() and still get to to the superclass functionality
if desired.
* Updated the ShapeLayer and package. The SpatialIndex no longer
needs to be defined, it will be found or made next to the shape
file. The dbf file will automatically be used if found, and the
DbfFile rule handling was improved. All of the various Shape
layers in the com.bbn.openmap.layer.shape package were update to
work using the same EsriGraphicFactory mechanisms.
* BinaryFile modified with improved name handling for
FileInputReader, separating absolute path and file name queries.
ByteArrayInputReader added to allow BinaryFile to contain entire
file in memory.
* WMS package updated to have capabilies query handling, improved