-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGELOG
1588 lines (1521 loc) · 115 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
GPlates 2.3
===========
Changes since 2.2:
* Deformation:
* Tectonic subsidence:
* Calculate tectonic subsidence due to crustal stretching (with thermal cooling).
* Calculate lithosphere temperature-depth profile at each surface point.
* Numerically solve temperature advection-diffusion equation:
* Using the Crank-Nicolson method followed by,
* solving that tridiagonal system of equations using the Thomas algorithm.
* Choose depth resolution and clamp absolute strain rate to ensure numerical stability.
* Changes in integrated temperature over depth contribute to thermal subsidence.
* This now gives us tectonic subsidence including the effects of thermal cooling of the lithosphere.
* Improve stability of crustal thinning calculations by clamping strain rate dilatation:
* Avoids extremely large spurious strain rates generating implausible negative crustal thicknesses.
* Rendering:
* Added two new age palettes ('traditional' and 'modern') to built-in palette dialog (along with existing 'legacy').
* Can now also be used in non-raster layers (3D scalar field layers and reconstructed scalar coverage layers).
* Improve look of tool palette on macOS (using stylesheet):
* Native look is worse on Qt6 than Qt4 (which itself wasn't that good).
* Now looks much more similar to Windows and Linux (which still use the native look).
* Support high-DPI displays (eg, Apple Retina):
* In globe/map views, colouring previews and canvas tool icons.
* Scale point sizes and line widths by the device pixel ratio.
* High-DPI displays have more pixels in same physical screen area, so without increasing sizes they would look too small/thin.
* Currently only integer factors are supported.
* On Windows, a system DPI scale factor of 175% will round up to 200% (150% round downs to 100%, otherwise GPlates is bigger than 1920x1080 display).
* Image export dimensions now specified using device-independent pixel coordinates (but exported image can be high-DPI, ie, device pixels).
* This also means exported image has some number of raw pixels as displayed in viewport.
* Velocity legend:
* Fix scaling (eg, for rendering to images smaller than the viewport).
* And now displays in (smaller) Manage Colouring previews.
* VGP:
* Create a single reconstructed feature geometry for each VGP (instead of an extra one for site point).
* And move visibility decisions from application logic to visual logic.
* Export:
* In 'general' resolved topology export, provide option to export each boundary segment as:
* sub-segments (of a resolved topological line) or as a single segment geometry.
* Support export of GeoJSON files.
* OGRGMT exports now have dateline wrapping disabled by default (previously enabled by default).
* Also exposing option to user to enable it. Note that "native" GMT does not respect dateline wrapping parameter (never does any dateline wrapping).
* Only Shapefile format for feature collections (as opposed to exporting) wraps to the dateline when saving.
* However this can be changed in the file configuration in ManageFeatureCollections dialog.
* Fixed OGR format feature collections (eg, OGRGMT, GEOPACKAGE, etc) incorrectly having the default configuration (eg, dateline wrapping) of Shapefile.
* Export resolved topological sections to a single file in same order as features in the files (also maintaining order across files).
* Rotations:
* Much faster creation of reconstruction trees.
* No longer repeat creation of reconstruction graph for each reconstruction tree (at each reconstruction time).
* Instead create more general graph once (suitable for all reconstruction times) and create trees from that (at specific reconstruction times).
* No longer need to clone reconstruction feature collections:
* Since reconstruction graph is a snapshot of rotation features (replaces clone).
* Means subsequently updated rotation features no longer inadvertently affect reconstruction trees of snapshot.
* New option to extend moving plate rotation sequences back to the distant past:
* Such that reconstructed geometries are not snapped back to their present day positions
* when the reconstruction time gets too old for the rotation file.
* Option saved in projects/sessions.
* Avoid modifying PLATES rotation file to no effect when adjusting stage pole to take short instead long path.
* This was marking the file as needing to be saved every time it's loaded.
* Happened when modified finite pole is identity rotation.
* Memory usage:
* Reduced memory usage of geometries:
* Multipoints reduced 40%.
* Polylines and polygons reduced 33%.
* Reduced reconstruction tree memory usage by 25%.
* Build:
* Overhauled CMake build system:
* Using modern CMake (version 3) API.
* Targets are created (add_executable/add_library), and
* their properties are defined using 'target_' commands (eg, target_compile_definitions, target_include_directories), and
* properties are passed transitively to other targets via 'target_link_libraries' command.
* Only using our own 'find package' modules to find dependency library when:
* library does not support CMake and CMake itself does not provide a find module for it.
* Can now create standalone binary packages on macOS, Windows and Linux.
* Windows supports NSIS and ZIP (both standalone).
* macOS supports DragNDrop package (standalone).
* Signs GPlates bundle, its internal contents and final DMG package with a Developer ID certificate.
* Notarization by Apple still manually done outside CMake/CPack (requires uploading and periodically checking notarization status).
* Linux supports:
* Standalone: tarball (pre-packaged dependencies).
* Non-standalone: Debian package (system package manager installs dependencies).
* For standalone installation, dependency libraries are recursively found and copied to install location, including:
* Python standard library (for embedded Python interpreter),
* Qt plugins,
* Windows Universal CRT libraries and Visual Studio runtime libraries,
* Python Hellinger scripts,
* GDAL/PROJ library data (eg, 'proj.db').
* Use CMake 'components' to handle separate installation of GPlates and pyGPlates:
* Will be used later to install/build pygplates into Anaconda.
* Updated GPlates icon (to new blue icon) used in file system (eg, associated with gplates.exe or gplates.app).
* Replaced old-style (pre-CMake3) pre-compiled headers with native support starting in CMake 3.16.
* Changed version numbering to support pre-releases for packaging including regular development releases and alpha, beta, release candidate releases.
* Works with Semantic and Debian versioning.
* Can enable CPU profiling without using 'ProfileGplates' custom build type:
* Avoids issues with CGAL not working well with custom build types.
* Library dependencies:
* C++11 is now a minimum requirement.
* GDAL 2.3 and above require it.
* CGAL 5 and above require C++14 (requirement transitively passed to GPlates via CGAL::CGAL CMake target).
* Significant upgrade to Qt version 5 (from version 4).
* GPlates and pyGPlates now link to zlib (and no longer require the gzip program).
* This also means pyGPlates no longer needs to include the gzip executable in the PATH on Windows.
* Enable compilation of Boost and CGAL with a different version of Visual Studio than GPlates (eg, VS2015 and VS2019):
* Disable boost auto-linking.
* Use header-less CGAL (CGAL >= 4.12).
* Ported Hellinger Python code to Python 3, and NumPy >= 1.12.
* Bug fixes:
* Fixed macOS scrollbar in layers window obscuring underlying layer controls:
* For example, inability to click '-' icon to remove a layer connection.
* Save GPlates log to writable location when current working directory does not have write permission:
* For example save to "C:/Users/<USER>/AppData/Local/GPlates/" when GPlates is installed to "C:\Program Files".
* Enable writing of '.json' files (not just '.geojson).
* Kinematics tool:
* Angular velocity (rads/Myr) is now always positive since stage rotation 'pole' is arbitrary (can negate pole/angle pair and get same rotation),
* and so we just take the absolute value.
* Raster fixes:
* Fixed bug where part of a raster touching dateline is stretched right across map (in 2D map views).
* Fixed incorrect clipping of high resolution floating-point rasters in map view.
* First noticed when exporting a 0.0005 degree numerical raster in export region: lat [-49.417, -28.917], lon [140.629, 150.23].
* Fixed bug in (non-reconstructed) raster when using non-zero central meridians in map view.
* This showed up as missing square sections in the displayed raster.
* This also affected raster export (which uses rectangular map projection) where square sections would be missing from exported raster.
* Fixed regional raster not getting exported with same extents as imported raster.
* No longer change left and right longitude extents of imported raster when they are already in range [-360, 360].
* Fixed exporting CitcomS topological segments using a header format that CitcomS is unable to pre-process:
* This resulted in missing subduction polarities, for example.
* Fixed dateline wrapping parameter not getting used for export to OGRGMT format.
* Fixed one GROT file getting saved with the contents of another GROT file.
* And also crashing when trying to save the first GROT file after unloading the second one.
* Fixed crash on Linux when opening a save file dialog to get project or feature collection file name.
* Fixed default settings not getting initialised from ":/DefaultPreferences.conf" (on some systems):
* Such as "view/animation/default_time_increment" being 0 instead of 1.
* Fixed point not detected as inside a network's rigid block, and crashing under assumption it must be in a delaunay face.
* Fixed exception/crash in the following topological scenario:
* a topological polygon sub-segment is a rubber-banded resolved topological line, and
* shared by two topological polygons, and
* we're retrieving its sub-sub-segments (eg, in 'general' resolved topology export).
* Fixed more complex topology rubber banding scenario involving:
* point (not line) sections where there's more than two adjacent sections,
* such as a triple junction (3 or more rubber bands converging on a single point).
* Fixed polyline around the equator not getting intersected with small polygon crossing it.
* Fixed some zero area dateline sliver polygons giving incorrect areas (multiples of PI instead of zero).
* And fixed polygon around the equator ending up with zero area instead of 2*PI (ie, half the globe).
GPlates 2.2
===========
Changes since 2.1:
* Deformation:
* Option to generate 'exponential' stretching profiles across rifts (instead of default constant stretching).
* More points are added to interior of deforming network and velocities distributed so strain rate varies exponentially.
* Variation is along stretching direction from un-stretched side of rift towards rift centre.
* Activated by adding 'rift' left/right plate IDs to any deforming network.
* Optionally specify three control parameters:
* Specify in deforming network feature or layer (with feature parameters taking precedence over layer parameters):
* One parameter controls the exponential constant.
* The other two parameters control how closely to approximate exponential curve (with better approximations running slower).
* Calculate, visualize and export strain rate "style":
* A unit-less quantity defined in Kreemer et al. 2014, categorizing extension, contraction and strike-slip.
* Support deforming networks in Net Rotation export (in addition to rigid plates).
* Although deforming networks with zero (or no) plate ID will all get grouped together as a single entry/plate,
* but only in the files for individual times (that list the plate contributions to total net rotation).
* Added option to generate deforming mesh points inside interior rigid blocks of networks (by default they're not generated there).
* Topologies:
* Updated CitcomS topology export:
* Added option to export all (plate/network/slab) polygons and all (plate/network/slab) boundary segments.
* Added extra boundary segments export for each of plate/network/slab type.
* Exported 'plate' boundary segment filenames now use 'plate_' prefix, so that 'all' boundary segments can use their previous filenames.
* Fixed missing 'plate's (that were not of type TopologicalClosedPlateBoundary; eg, OceanicCrust).
* Updated General topology export:
* Added option to export boundary segments.
* Including separate subduction, subduction left/right, ridge/transform files (similar to CitcomS topology export).
* Boundary segments are unique.
* Not duplicated like in CitcomS export where GMT header outputs plate/slab/network name and reversal flag (and hence tied to specific topology).
* When a boundary segment comes from a resolved topological *line*, export the sub-segments contributing to the resolved *line* segment:
* Ensures the correct plate IDs get exported,
* ie, plate IDs of actual reconstructed features that contribute to resolved topological line (rather than resolved topological line itself).
* Much more robust determination of which points contribute to a topological sub-segment of a topological boundary:
* Including sub-segments made from topological *lines* (that, in turn, contribute to a topological boundary).
* Robust determination of velocities along topological boundary.
* Results in robust strain rates inside topological networks.
* Use average of velocities of two adjacent intersecting topological sections (eg, at corners of topological network boundaries).
* Avoids randomly switching the velocity from one section to the other between reconstruction times (and subsequent effects on strain rate).
* Interpolate velocities when clipping a resolved topological line (used as a section of a topological boundary) in the middle of a segment/arc.
* There can be differing plate IDs on either end of the segment/arc (eg, if topological line is made from points and is deforming).
* When individual points are used as topological sections in a topology their sub-segments become small polylines:
* Each polyline essentially expands the point to two new points halfway to its adjacent neighbours (topological sections).
* The same applies to *lines* that rubber-band instead of intersect.
* This fills in gaps a topological boundary (eg, when exporting topological boundary segments).
* Projects and recent sessions:
* Save time slider range to project/session.
* Also extend default time range to 410Ma (from 200Ma) since rotation model goes back to 410Ma.
* File formats:
* Added support for reading/writing GeoPackage geometry files.
* Support null attributes for OGR vector formats (Shapefile, etc).
* Eg, not all features in file will have a conjugate plate ID or left/right plate IDs.
* Avoids assigning a property to a feature that it shouldn't have.
* Support UTF8 when reading (and writing) PLATES4 line and rotation formats.
* Useful when rotation comments contain some non-ASCII characters.
* Rendering:
* User can show/hide topological lines, polygons and networks.
* Can also show/hide topological "sections" (those geometries referenced in topological boundaries/interiors).
* GPlates now hides these dangling bits on topologies by default (so novice users don’t get confused when loading public data).
* User can show/hide rasters, 3D scalar fields and scalar coverages.
* Velocity layers can calculate velocities on *domains* that are topology layers (as opposed to *surfaces*).
* This calculates velocities at the *vertices* of topological lines, polygons and networks.
* Render clicked (white) geometries on top of non-clicked (grey) geometries (belonging to the same feature).
* Useful when the feature's geometries overlap.
* GPlates Geological Information Model (GPGIM):
* Added new GPGIM feature type "DeformingRegionEdge" that is edge of a deforming region that is also not a plate boundary.
* Allow a gpml:MeshNode feature to contain a point geometry (previously only allowed a multi-point).
* Enables single point to automatically create a velocity layer (because only MeshNode features do this).
* Added properties for rift exponential stretching:
* 'gpml:riftLeftPlate' and 'gpml:riftRightPlate' - conjugate rigid plates bounding a rift topological network.
* 'gpml:riftExponentialStretchingConstant' - controls exponential variation across rift stretching profile.
* 'gpml:riftEdgeLengthThresholdDegrees' and 'gpml:riftStrainRateResolutionLog10' - control approximation to true exponential curve.
* Removed no-longer-used network properties 'gpml:networkMaxEdge' and 'gpml:networkShapeFactor'.
* Polyline intersections:
* More robust polyline intersections code, and significantly faster.
* Assigning plate IDs is much faster (especially dense geometry like coastlines).
* And resolving topologies is a little faster.
* Distances to polygons (from another geometry) now take into account any interior rings of the polygon.
* Includes polygon-to-polygon distances (where both polygons have interior rings).
* Bug fixes:
* Fixed hang on start up on Mac systems where network interface appears active but network is unavailable.
* Fixed crash triggered when exporting total strains.
* Fixed crash on exiting on some Ubuntu versions (due to freeing same memory twice).
* Fixed time-dependent raster import (and 3D scalar field import) not accepting filenames with uppercase extensions.
* Fixed crash when saving a rotation feature with a 'gml:name' or 'gml:description' property to a PLATES4 rotation file.
* Most rotation features don't have these properties (but they're usually created this way via pyGPlates).
* Fix crash loading a GPML file containing a feature property that cannot be interpreted using any property defined in the GPGIM.
* Workaround CGAL bug causing natural neighbor interpolation to get stuck in an infinite loop for some Delaunay triangulations:
* Such as South Atlantic deforming networks at 120Ma.
* The bug is fixed in CGAL 4.12.2, 4.13.1 and 4.14.
* Fixed parallel build compile errors "Cannot open include file: '<...>Ui.h': No such file or directory".
* Build:
* Support Visual Studio 2015/2017 (GDAL 2.3 uses C++11 which requires VS2015), and update Windows build docs accordingly.
* Document how to build a 64-bit version of GPlates on Windows (including dependency libraries).
* Fixed issue introduced by GDAL 3.0:
* Data-axis-to-CRS-axis mapping breaks backward compatibility.
* Restore to GIS-friendly order (longitude first, latitude second) like previous GDAL versions.
* Fixes incorrect 90 degree rotation in lat-lon space in rasters with inbuilt projections (eg, Lambert Conformal Conic).
* Upgraded support to new Proj6 API (but also support deprecated Proj4 API).
* Added SQLite3 dependency library (due to adding support for GeoPackage vector format).
* Support Boost 1.66 - adds an architecture tag (eg, x32 or x64) in the library filename.
* Support Boost 1.67 - adds a Python version suffix (e.g. ``python27``) to the boost python components.
* Fixed CMake error finding GMP library on Windows (recent CGAL versions already link to GMP, so GPlates doesn't need to).
* Work around internal compiler error (gcc 5.4) on Ubuntu Xenial (16.04).
* No longer combine '-ansi' (equivalent to '-std=c++98') and '-std=c++11' flags (first noticed on gcc 9.1).
* No longer turn warnings into errors:
* There are lots of warnings generated by dependency libraries (that we can't easily fix) and new compilers.
GPlates 2.1
===========
Changes since 2.0:
* Velocity legend:
* Visual indicator of velocity arrow lengths in a target velocity layer.
* Displays a single arrow and its velocity (in cm/yr).
* Legend velocity can be constant (eg, 2 cm/yr), or variable (to keep arrow length within reasonable limits).
* Legend arrow length changes in response to velocity scaling in the target layer.
* Projects and recent sessions:
* Fixed problems loading projects saved on computers with different locales:
* The following backward/forward compatibility rules now apply:
* Can load the following on 2.1:
* Projects saved with 2.1 on any locale:
* For example, (English or Chinese)->(English or Chinese).
* Only projects saved with 2.0 on English locale or same locale (if not English):
* For example, English->(English or Chinese), or Chinese->Chinese.
* Can load the following on 2.0:
* Projects saved with 2.1 on any locale, but must be loaded on English locale.
* For example, (English or Chinese)->English.
* Only projects saved with 2.0 on matching locale.
* For example, English->English or Chinese->Chinese.
* Problems stemmed from incorrectly saving/loading QDateTime using 'system' locale (instead of "C" locale).
* Save anchored plate ID, background colour and graticule settings to project/session.
* When asked to locate a missing data file, show directory where missing file should have been.
* Fixed filenames (with sharename in path) not loading when session/project loaded (on Windows).
* Deformation:
* Topological networks:
* Can now use mid-ocean ridges as boundary/interior sections.
* Or any feature reconstructed by half-stage rotation (in addition to by-plate-ID).
* Added triangulation *draw* mode in topology network (brown) layers.
* Can draw boundary, mesh or fill (independently of colour mode).
* Display mesh by default (instead of boundaries).
* Better visual indicator of deforming regions.
* Fixed deforming meshes disappearing in 2D map views when strain rate smoothing enabled.
* Fixed incorrect state of check boxes to export resolved topological networks/polygons.
* When editing the export GUI options (in 'general' resolved topologies export).
* Strain rate and accumulated strain:
* Added total strain rate.
* Visualize and export.
* Uses geodesy definition of second invariant in Kreemer et al. 2014.
* Added exports for the following accumulated strain quantities:
* Strain dilatation.
* Principal strain and stretch.
* Exports triplet (angle/azimuth, major axis and minor axis).
* Major/minor axes are strain (extension positive; compression negative) or stretch (1.0 + strain; always positive).
* Plot stretch ellipses in GMT (with psxy).
* Added optional strain rate clamping:
* Useful for excessively high strain rates in some triangles of deforming mesh.
* Depends on how deforming network was built/modelled.
* Clamps *total* strain rate, since includes both normal and shear components.
* Triangles outside deforming region (with zero strain rate) no longer contribute to smoothed strain rate.
* Clamping strain rate is a better option to limit spurious strain rates.
* All strain rate and accumulated strain quantities now calculated in spherical coordinates (instead of 2D cartesian).
* Finite strain is now correctly accumulated.
* By integrating deformation gradient tensor over time, using spatial gradients of velocity.
* Crustal thinning:
* Fixed crustal thinning (gamma) factor.
* Should be '1 - T/T_initial' instead of 'T/T_initial'.
* Automatically convert crustal thinning factors created by GPlates 2.0 (when loading GPML file).
* Added crustal stretching (beta) factor 'T_initial/T'.
* All three crustal thickness types now created when generating crustal thickness points.
* Thickness (kms), stretching (beta) factor and thinning (gamma) factor.
* Independently visualize and export.
* Can optionally generate points within a lat-lon box.
* Calculate statistics using entire history of crustal thicknesses/factors.
* Provides a better mapping of palette colours.
* Previously statistics were only calculated at initial time (but initial thicknesses are constant).
* Fixed missing IMPORT_AGE attribute in OGR vector formats (eg, Shapefile).
* Required for version 3 half-stage rotations (created in GPlates 2.0 and above) to work properly.
* Also required for crustal thickness points to work.
* Scalar coverages:
* Added option to also export dilatation strain and total strain rate (in addition to dilatation strain rate).
* In addition to exporting scalar coverage.
* Interpolate vertex colours along each line segment of polylines/polygons.
* Previously just rendered as point geometries with no line segments.
* Disabled insert/delete/split tools for scalar coverage features.
* Temporary solution to avoid losing mapping between domain points and scalar values.
* Avoid potential negative in sqrt when calculating standard deviation due to numerical precision.
* Symbols:
* Fixed symbols not working for points when they are reconstructed using topologies.
* Fixed strain accumulation symbol size truncating to integer values.
* Reconstructing regular features using topologies:
* Added option to remove points from within a deforming network as soon as they fall outside.
* The "Set Topology Reconstruction Parameters" dialog now pops up when generating crustal thickness points.
* Since points must be topologically reconstructed in order for crustal thicknesses to evolve.
* Fixed cancelling of "Set Topology Reconstruction Parameters" dialog always turning on "reconstruct using topologies".
* Rasters:
* Enable import and export of NetCDF version 4 rasters (via GDAL library version 2).
* Interoperable with GMT version 5.
* Optionally compress exported NetCDF.
* Support export of *gridline* registered rasters.
* Eg, global raster where left and right pixel columns overlap on dateline.
* Also support *gridline* import (for rasters with no inbuilt georeferencing).
* Support greater than 8-bit per channel RGBA rasters (including floating-point).
* Import down-converts to 8-bit per channel RGBA for display.
* Import generates transparency for RGBA rasters supporting no-data values (in each R,G,B,A band).
* Alpha channel set to zero (transparent) for matching pixels.
* Time-dependent raster (and 3D scalar field) import now supports times (depths) anywhere in filenames.
* For ambiguous cases (eg, multiple decimal points) place times (depths) at end of filename (after '_' or '-').
* Export both ".nc" and ".grd" rasters using same NetCDF driver (difference is only the file extension).
* Fixed incorrect half-pixel shift downwards (North to South) for *gridline* registered global GMT grids.
* Has been incorrectly shifting since GPlates 1.4.
* Also fixed a separate pixel-shift issue within 5 degrees of North or South pole (in regular lat-lon projection).
* Fixed semi-transparent vertical seam near North and South poles at longitude 0 or -180.
* Happened in 2D map views (and in 3D globe view when reconstructing raster).
* Fixed slow rendering of very coarse rasters in 2D map views.
* Made it easier to import/export rasters outside longitude range [-180,180].
* Fixed incorrect raster statistics when all pixels in raster match no-data value.
* Velocities:
* Make GMT velocity export compatible with GMT psxy "-Sv" and "-SV" command-line options.
* Angle/azimuth now in column 3 and magnitude in column 4.
* Optional plate ID now in column 5.
* Colouring:
* CPT files:
* Support GMT5 "C/M/Y/K" colours.
* Support GMT5 CMYK "COLOR_MODEL".
* Support different non-space-separated colour types on a single line.
* Eg, "R/G/B" and "gray80".
* Added button to reload colour palette file in colouring/draw styles.
* Assign *all* known feature types a random colour in Feature Type draw style.
* From GPlates 1.3 to 2.0 inclusive, all but 11 feature types were incorrectly assigned the default navy colour.
* Fixed alpha component of RGBA colours not getting interpolated.
* Fixed locale issues converting min/max remapped palette range to/from line edit text.
* Digitization:
* Fixed vertex edits not modifying topologies.
* Eg, moving vertices of a feature used as a topological section in a topological network.
* Digitize New Geometries:
* No longer offer Reconstruction/Conjugate Plate IDs for topological networks and topological lines.
* Only meaningful for topological polygons (eg, to calculate non-deforming plate velocities).
* Now use zero Plate ID for these topological networks in CitcomS export.
* Only offer ReconstructionMethod combo box for feature types supporting it.
* Also exclude for topological geometries.
* Fixed sorting (alphabetically) in Create Feature dialog, Choose Feature Type widget and Add Properties dialog.
* Fixed Add Property dialog not starting with 'gml:name'.
* Fixed missing first vertex when exporting digitised polygon to GMT('.xy') format in digitisation tool.
* Geometry tests:
* Point-in-polygon test now considers points *on* a polygon edge (within extremely small tolerance) to be inside polygon.
* Helps ensure points lying exactly on dateline are inside a polygon that has an edge exactly aligned with dateline.
* Fixed Assign Plate IDs retaining only first geometry in each feature when using 'copy by overlap'.
* Fixed point proximity to a polyline/polygon in rare situations.
* Resulted in incorrect selection with Choose Feature tool.
* Avoid exception attempting to normalise zero vector during point proximity to a great circle arc.
* Topology tools:
* Build topology tools are now always enabled (makes it easier to build topologies at any time).
* When entering a build tool any focused feature is un-focused, and then re-focused on exiting build tool.
* Improved topology tools performance when any green layers are reconstructed using topologies.
* Features reconstructed "using topologies" cannot in turn be used to build topologies (cyclic dependency).
* GPlates Geological Information Model (GPGIM):
* Allow multiple 'gpml:boundary' polygons per feature.
* Loosen constraints on properties that can be loaded from a GPML file.
* Any feature type can now contain any property defined in the GPGIM.
* Can have feature types not defined in GPGIM.
* More aligned with current ability to add any property to any feature type (albeit with a warning message).
* Also more aligned with Shapefiles (which can load any property, in Shapefile mapping, into any feature type).
* Graphics (OpenGL):
* Only disable surface mask functionality in 3D scalar fields for problematic graphics driver/hardware.
* Happens on systems that don't respect compatibility texture functions in geometry shader programs.
* Only affects surface masking of scalar fields (not all scalar field functionality).
* Avoid aborting due to unexpected framebuffer status.
* Fixed 3D scalar field run-time shader compilation failures on MacOS 10.13.
* Due to "#extension"s after non-preprocessor shader code.
* No longer abort on OpenGL errors in non-debug builds (in line with typical OpenGL application development).
* In rare cases some systems generate OpenGL errors but continue to function normally.
* Dateline wrapping:
* Expose properties for each point in wrapped output geometry.
* Eg, if original point; if tessellated; if on dateline; if on original segment.
* Fixed incrementing vertex index of polygon ring past its end when tessellating.
* Now wraps around to ring start vertex.
* Fixed interpolate info of tessellated polygon rings.
* Can get traversed in backward direction (not just forward).
* Don't output interpolate info for vertices of dateline wrapped polygon at North or South pole (but not on original polygon).
* Enable C++11 for compilers with full support since GDAL 2.3 now requires it.
* Clang 3.3 and GNU 4.8.1.
* MSVC 2015 automatically uses C++11 when needed.
* Support up to 10-digit plate IDs (essentially 32-bit signed integers) in all Plate ID spin boxes.
* Extend begin/end times in Kinematics tool to 9999 Ma each (previously was 1000 Ma).
* Fixed inability to save PLATES rotation files using non-ASCII (unicode) filenames (in some cases).
* Fixed inability to save/load OGR formats (eg, Shapefile) to/from non-ASCII (unicode) filenames.
* Restore size of globe/map view (back to that of GPlates 1.5).
* GPlates 2.0 was using some extra horizontal space which made globe/map view look smaller.
* Fix crash when both lat/lon deltas in graticule are set to zero.
GPlates 2.0
===========
Changes since 1.5:
* Projects and recent sessions:
* Now saves and restores all layer information:
* Including layer order, visibility and all settings within each layer (such as colour styles and colour palette filenames).
* Open projects using File menu, drag'n'drop, double-clicking or command-line.
* Project name displayed in window title.
* Copy a project to another computer. For example:
* Zip up a folder containing project file and associated data files (including colour palette files).
* Unzip to another computer and open project file in GPlates.
* Option to locate missing data files (when loading project or recent session):
* Useful when data files moved after project or session was saved.
* Option to resolve ambiguous data files (when loading relocated project):
*Useful when data files exist in both original and relocated locations.
* GPlates 2.0 can open projects and recent sessions saved by all prior versions of GPlates:
* However information saved by earlier versions is limited.
* GPlates 1.5 can open projects and recent sessions saved by GPlates 2.0:
* However restored information is limited (to what GPlates 1.5 can understand).
* Handle broken forwards compatibility (broken in GPlates 1.5):
* By saving a special isolated session state to tag "session_state_version4".
* Also load/save regular session state to "session_state" tag.
* Scribe system uses multi-section tag strings:
* No longer require a C++ class just to transcribe a group of values under the same tag.
* Support Infinity and NaN (for float/double) in the scribe archive writers and readers:
* In text and XML formats. Binary already has support due to QDataStream.
* Internal sessions stored in compressed binary archive instead of uncompressed text archive:
* Reduce chances of exceeding Windows Registry key limit of 1Mb.
* New Hellinger tool:
* A new workflow to determine best-fitting poles by the method of Hellinger:
* Import and export data files compatible with the FORTRAN programs of Chang and co-workers.
* Edit and create magnetic pick data points, via the canvas or tabularly via the Hellinger dialog.
* Adjust segmentation of magnetic picks.
* Enable/disable magnetic picks from inclusion in the fitting algorithms.
* Specify pole and angle estimates via the canvas or via the Hellinger dialog.
* Perform fitting using a python implementation the FORTRAN programs.
* Visualise resulting fit and uncertainty on the canvas.
* Export fit and uncertainty data to text file.
* Deformation:
* Topological networks:
* Boundary is similar to a topological closed plate boundary, but also has:
* A deforming interior region (due to individual deforming points).
* Optional interior rigid blocks.
* Build New Network Topology tool now publicly available (without requiring command-line switch to enable).
* Export topological network boundaries in general Resolved Topologies export.
* Query and visualise velocities and strain rates at arbitrary points in networks.
* Strain rates use logarithmic colour scale.
* Optionally display total (accumulated) strain at arbitrary points:
* Displays principal components and orientation.
* Outward-facing red arrows for extension.
* Inward-facing blue arrows for compression.
* Reconstructing regular features using topologies:
* Use both topological rigid plates and deforming networks to reconstructed regular features.
* Incrementally reconstructs by plate ID in topological rigid plates.
* Incrementally deforms in topological deforming networks.
* Begin incremental reconstruction at a feature's time of appearance, digitisation time or present day.
* Use specific topological layers or default to all loaded topologies.
* Option to detect lifetime of each point in a geometry:
* Oceanic points appear (mid-ocean ridges) and disappear (subduct).
* Based on convergence velocity and distance to plate boundary during a plate/network transition.
* Scalar coverages:
* A new geometry type in a new layer type.
* Each point in a multipoint/polyline/polygon has a scalar value associated with it.
* For example, visualise mid-ocean ridge spreading rates and asymmetry calculated externally using pyGPlates.
* Crustal thinning:
* A specific type of scalar coverage containing crustal thickness values.
* GPlates recognises this coverage type internally:
* Uses deformation strain rates to evolve crustal thickness over time.
* An input dialog generates initial crustal thickness points:
* Uniform distribution of points within a topological rigid plate or deforming network boundary (with optional random offset).
* Specify initial constant/flat crustal thickness at a past geological time.
* Choose from a selection of built-in colour palettes to visualise crustal thickness variations over time.
* Export crustal thickness values to GMT(xy) or GPML format.
* Also added a separate export for deformation (strain rates).
* Official public release of volume visualisation:
* No longer require command-line switch to enable importing of 3D scalar fields.
* Net rotation export:
* Calculates and exports net rotation of the lithosphere (based on the method of Torsvik et al., 2010) using global coverages of dynamic plate polygons.
* Net rotations are exported via the standard "Export…" tool, and by selecting the "Net rotation" export type.
* Any dynamic plate-polygon data sets currently active in GPlates will be used as the basis for net rotation calculations.
* Improved OGR spatial reference system (SRS) support:
* More complete support for OGR-supported files (e.g. ESRI shape file, OGR-GMT and others) which provide spatial reference system / projection information.
* Any SRSs supported by the PROJ4 library should now be accepted by GPlates.
* When saving to a file which had a non-WGS84 SRS associated with it, GPlates will prompt the user to export in either the original SRS, or in WGS84.
* All other forms of file export in GPlates continue to use WGS84.
* Improved handling of import / export directories
* Now stores the last used directory for Project files.
* More fine-grained support for both Feature Collection and Project folder preferences (can adjust through the Preferences (Ctrl+,) dialog).
* Visibility of all layers can be toggled as a group using the new visibility icons in the Layers dialog.
* Support non-zero central meridian in dateline wrapper.
* In Pole Manipulation tool, only render highlights on geometries in visible layers.
* Half-stage reconstruct method now defaults to a new version (3) of half-stage rotation calculation:
* First reconstructs using only left plate to digitisation time of mid-ocean ridge (if digitised in GPlates 2.0 or above).
* Then half-stage rotates from digitisation time to reconstruction time.
* Changes to spreading asymmetry no longer move ridge to incorrect position (at digitisation time).
* Can adjust line width in Graticule settings.
* Assign Plate IDs dialog:
* Time of appearance and disappearance are now separate options.
* Added conjugate plate ID option.
* Added option to only copy/assign requested feature properties that are allowed (by GPGIM) for the partitioned feature type.
* No longer overwrite comment in rotation pole when using Pole Manipulation tool.
* Intersection and distance queries:
* Calculate minimum distance between two geometries:
* Each geometry can be a point, multipoint, polyline or polygon.
* Can use optional distance threshold and optionally returns closest positions and indices (into points or segments).
* Polygons can be treated as non-solid (outline) or solid (geometries inside polygon are zero distance).
* Uses a binary bounding small circle tree for polylines/polygons for efficient early rejection.
* Traverses tree and uses minimum distance between two small circles.
* Calculate optimal bounding small circle around two other small circles.
* Added centroid calculation function for polygons/polylines based on weighting the segment lengths.
* Have separate boundary and interior centroids for polygons:
* The latter being closer to the centre-of-mass of polygon interior.
* Fixed spherical version of centroid calculation for polygons:
* For clockwise polygons the centroid was on the opposite side of the globe.
* Point-in-polygon test defaults to adaptive:
* Starts off low-speed then moves to medium and high speed as more point-in-polygon calls are made.
* Can interpolate two polylines along small circles about a (stage pole) rotation axis.
* Can tessellate polylines and polygons.
* Added tessellation to dateline wrapper:
* Useful for polygons crossing dateline in non-rectangular 2D map views (polygon section along dateline is curved).
* Added support for donut polygons (containing interior holes):
* GPML, OGR (shapefile), PLATES (line) and GMT(xy) readers/writers supported.
* Feature query/edit dialogs display interior holes.
* Supported by raster reconstruction, raster co-registration and filled polygons display.
* Also supported by 3D scalar fields (cross-sections, surface masks and polygon walls).
* Also supported by for point-in-polygon test, spherical area, centroid, orientation and dateline wrapper.
* Colour palette improvements:
* Available in raster, 3D scalar field and scalar coverage layers.
* Remap the range using mean and standard deviation of the layer data (raster, 3D scalar field or scalar coverage).
* Added a variety of built-in colour palettes based on ColorBrewer sequential and diverging colour scales.
* Raster reconstruction improvements:
* Connecting raster layer to polygons much more stable and noticeably faster (using our own polygon mesh refinement).
* No more seams/cracks in raster between adjacent polygons (matching tessellation of shared polygon boundaries).
* Added image compression to raster export (colour and numerical) for TIFF and Erdas formats.
* Resolving topologies can also generate non-overlapping sub-segments shared by adjacent topology boundaries/networks:
* No duplication/overlap in this set of segments (as opposed to boundary segments of each resolved boundary/network).
* Only those layers and features that can actually contribute to resolved topologies are reconstructed:
* Improves performance noticeably when topologies are used to reconstruct regular features.
* Support partitioning of point/multi-point/polyline/polygon scalar coverages when assigning plate IDs.
* Removed option to assign plate IDs to each sub-geometry of a feature. Now the only two options are:
* Assigning based on the polygon that most overlap the *entire* geometry of a feature (all its sub-geometries combined), and
* Partitioning into polygons.
* Added Earth class for parameters such as Earth radius.
* Topology geometry and network layers also support fill opacity/intensity.
* Can merge selected (or all) rotation layers into one layer:
* Avoids user having to manually connect multiple rotation files into a single rotation layer.
* Added velocity delta-time options to velocity layer:
* Can change delta-time interval, and choose 't+dt->t', 't->t-dt' or 't+dt/2->t-dt/2'.
* Attempt to calculate non-zero velocities, when one of the times in delta interval is negative, by shifting time interval.
* Can now import and register 'internal' Python scripts (stored in Qt resource files embedded inside application):
* This will mean that important scripts such as colouring scripts will always get registered.
* No longer need to ensure they are installed in the correct place on the user's file system for example.
* Allow Python colouring classes to declare their own set of 'built in' config variants.
* Added new colour styles with arbitrary colours (HSV configurable) and properties.
* Colour vector geometries on the rear of the globe the same as the background colour:
* Results in less visual interference/clutter for geometries on the front of the globe (when globe is semi-transparent).
* Can create conjugate isochron linked to original (cannot yet follow links in GUI though).
* Store +/- Infinity in GeoTimeInstant (for distant past/future).
* GPlates Geological Information Model (GPGIM) updates:
* Added stratigraphic timescale.
* Added support for named ages (in contrast to absolute ages) with timescale information and uncertainty tracking:
* GUI supports find-as-you-type named ages with timescale colouring.
* Updated Mag Pick and Lineations.
* Added XSLT stylesheet to make GPGIM XML viewable in web browser (with formatted clickable links and inheritance unrolling).
* Added GPGIM XSD.
* Write lat/lon/angle to PLATES rotation files with 4 digits of precision instead of 2.
* Use the North pole (90,0) as the axis for zero-angle (identity) rotations when writing out PLATES rotation file.
* When exporting reconstructed/resolved geometries to a single output file, retain shapefile attributes if the associated features all came from a single file.
* OGR geometry exporter can write multiple geometries as a single feature (if geometries came from same feature).
* Added progress bar when adding depth layers during 3D scalar field import (and when adding time sequence during time-dependent raster import).
* Remove depth layer raster cache files after importing 3D scalar field if the cache files didn't exist prior to the import:
* Frees the user's disk space of the cache files generated during import process.
* When importing 3D scalar field, read georeferencing and SRS from first depth layer raster (if has that info):
* Otherwise ask user for georeferencing (and assume WGS84 SRS).
* Compiling software:
* Remove dependency on ImageMagick.
* Add "/LARGEADDRESSAWARE" for Win32 builds to enable 4Gb (versus 2Gb) for 32-bit builds on a 64-bit Windows OS.
* Fixed horizontal lines in 2D map view for grid marks sample data.
* Fix mixing of single and multi polylines/polygons in OGR-GMT files.
* Fix error adding delaunay points from a topological line that is, in turn, made from a series of points.
* Fix unhandled math exception in 2D map projection renderer when dateline wrapper creates a polygon arc with antipodal end points (at North and South poles).
* Fixed infinite loop bug in polyline intersections code (caused hang when assigning plate IDs with specific dataset).
* Fixed bug in polyline intersections code (incorrect reversal of inside-outside test).
* Avoid potentially incorrect result in polyline/polygon partitioning when encounter two zero-length great circle arcs.
* Fixed so that points equal (within epsilon) to a great circle arc's start point should be considered to lie on the arc.
* Fixed another infinite loop bug in polyline intersections code (two overlapping arcs assumed pointing in wrong direction relative to each other).
* Fix two polylines intersecting at a common vertex (prevent tunnelling through each other without being noticed).
* Fixed rendering of filled polylines in 2D map views.
* Fixed bug in polyline/polygon (outline) centroid caused by point-in-polygon test incorrectly passing polygon consisted of coincident points.
* Fix dateline wrapping bug where a small polygon incorrectly covers the entire globe/map if intersects North or South pole (on a polygon segment that lies on the dateline plane).
* No longer update stage pole location when Enable Pole checkbox is not checked (also update when checkbox is checked again).
* Fixed velocity layer options not updating when changing the solve-velocities-method.
* Fixed azimuthal equal area projection exception when unprojecting a point that is coincident with the centre of projection.
* Fixed flickering cross-sections in 3D scalar fields (bug in mapping OpenGL buffers for streaming).
* Fixed crash when reloading an age grid or 3D scalar field.
* Unmap age grid colour palette when 'age' button clicked to avoid incorrect colours.
* Fixed terminating due to uncaught scribe exception when encountering a corrupt session archive.
* Fixed open file read error not showing in Read Errors dialog (when a feature collection file is missing).
* Fixed CPT file read errors not showing in Read Errors dialog.
* Fixed main globe/map view (and associated draw style's preview icon) not getting updated when the draw style's configuration changed (eg, changing colour or palette).
* Fixed crash when changing draw style configuration parameters in GUI or when removing a draw style in GUI.
* Fixed infinite recursion bug in model notification. This was noticed when importing a raster.
* Fixed SVG export of 3D scalar field isosurfaces (on Mac OS X) which appeared to be incorrectly rotated and offset from centre of globe.
* Fixed 3D scalar field cross-sections generating 'invalid operation' in OpenGL on Mac OS X (during draw call due to shader program being invalid).
* No longer require first and last point of GML polygon to be identical (when reading GPML file):
* Some GPML files have only three points (instead of the required 4 points - since first and last should be identical) since really only need 3 points for a polygon.
* No longer show the GPGIM version warning dialog when overwriting a GPML file with an older version.
* Fixed Move Vertex tool (and other geometry tools) not working with flowlines.
GPlates 1.5
===========
Changes since 1.4:
* Added project files:
* Implemented new scribe/serialisation system for backward/forward compatible transcribing of sessions/projects.
* Currently saves same session state as GPlates 1.4 (but also to project files) - future releases will save more.
* Added new kinematics tool:
* displays table of latitude, longitude, velocity, and velocity-related quantities for a given lat-lon point, plate ID, and range of times
* displays graph of above quantities against time
* exports table to text file
* kinematic tool settings dialog to change details of the velocity calculations
* kinematic tool settings are saved in user preferences
* auto-fills point data from focussed feature
* auto-fills time ranges from animation settings
* Added support for import and export of GeoJSON format feature collections.
* Flag read error when OGR can't find geometries in a multi-geometry.
* Fixed issue with overwriting OGR-format files to multiple folders:
* i.e. when exporting collections with multiple geom types.
* Fixed crash on GPlates shutdown (in debug build) on Windows due to Windows using a separate memory heap per DLL.
* Fixed crash in raster colour scale when colour palette has no colour entries.
* Increased upper limit on Generated CitcomS Velocity Domain Points diamond size to essentially unlimited (2^30 + 1).
* Create Feature Dialog improvements:
* Allow user to create a conjugate feature for any feature that has a conjugate plate id.
* Remember all properties of previously digitised feature so can re-use for next feature (if same type).
* Select same feature type each time Create Feature dialog is invoked.
* Remember previous selection when choosing feature collection or choosing properties.
* PLATES format reads conjugate plate ids for feature types that support it (according to GPGIM) instead of just for Isochrons.
* Fixed features not getting highlighted in Modify Reconstruction Pole tool.
* Fixed incorrect position of stage pole in MovePoleWidget.
* Updated CPT parser for support GMT 5.
* Export GUI options for forcing polygon orientation during resolved topology (general) export.
* Partial support for Mac Retina displays (fixes blurry fonts/dialogs but not the globe/map view).
* Pop up warning message when 'surface polygons mask' is not supported for 3D scalar fields.
* Added dialog for configuring rendered geometry parameters for canvas tools.
* Fix crash on some graphics hardware when selecting 'surface polygons mask' on isosurfaces.
* Export a raster's spatial reference system (eg, for ArcGIS).
GPlates 1.4
===========
Changes since 1.3:
* Export (numerical) rasters:
* Export raster layers to one raster file per visible layer.
* User specified lat/lon export region and resolution.
* Added GDAL and RGBA raster writers.
* GDAL writes colour (as RGBA bands) or floating-point (with NaN no-data value).
* RGBA writes only colour.
* Supported numerical raster formats: NetCDF, GMT NetCDF, GeoTIFF and Erdas Imagine.
* New supported colour raster formats: GeoTIFF and Erdas Imagine.
* Surface relief lighting included in colour raster export.
* Colour palette used to export numerical rasters as colours (in colour export).
* Statically link PROJ4 library to GDAL.
* Avoids runtime DLL/SO load error when loading raster with non-default spatial reference system.
* Completed emulation of bilinear filtering of *floating-point* textures in all fragment shaders requiring it.
* Incorporate pixel coverage in bilinear filtering to avoid wrong values at boundary between covered and non-covered areas.
* Export raster statistics (notably Erdas Imagine) to avoid black raster in ArcGIS.
* Import raster improvements:
* New raster formats: ERMapper, Erdas Imagine and GeoTIFF.
* Import georeferencing from source raster file.
* Skip georeferencing dialog wizard page if raster specifies georeferencing.
* Support inbuilt raster spatial reference systems (projection included).
* Enables conversion from raster georeference coordinates to WGS84 coordinates (GPlates default).
* Support RGB(A) rasters with GDAL raster reader.
* Now use GDAL to read TIFF rasters (instead of Qt) since GeoTIFF files have georeferencing and spatial reference systems.
* Improved performance when importing very large rasters (mostly GDAL-based rasters but also RGBA rasters).
* Calculate statistics ourselves to avoid GDAL scanning entire file.
* Allow reading raster decompressed images that are greater than 32-bits (4Gb) in size.
* Fix GmlPoint so it can accept a position outside valid lat/lon range.
* Needed for georeferenced origin of raster in *projected* coordinate system.
* Fixed inability to export images (screenshots) on systems supporting GL_ARB_vertex_buffer_object but not GL_ARB_pixel_buffer_object.
* Fixed missing thin sliver triangles at top and bottom of map view (four triangles in total).
* Fixed rare missing georeferenced raster tiles in reconstructed raster (map view).
* Possibly solves corrupt export of 3D scalar fields to SVG format.
* Fixed raster map view not correctly updating world transform.
* Improved performance of rasters in map view - now require fewer source raster tiles.
* Using HTML in export description labels.
* Added reconstruction files to flowline, motion-path, reconstructed geometry and topology exports.
* Fixed wrong order of arguments in motion-path/flowline OGR export.
* Replaced shp-export-related occurrences of PLATE_ID with PLATEID1.
* Added spreading asymmetry to exported shapefiles.
* Also added to import mapping.
* Using default geometry type when creating features from OGR sources.
* Prevent negative times when editing time sequence.
* Fix flowline creation issues by demanding present-day time in array-of-times and preventing its deletion.
* Allow user to specify lat/lon region when generating velocity domain nodes in lat/lon space.
* Render direction arrows (eg, velocities) as proper 3D (cylindrical body and head) with lighting.
* Fixed map view mouse drag location lagging by one frame/update.
* Fixed 'Reset Rotation' button not enabled in Manipulate Pole tool.
* Fixed populated geometries in Manipulate Pole tool from disappearing when changing the reconstruction time.
* Add circularly-symmetric symbols for rendered radial arrows.
* New Move Pole canvas tool:
* Used to specify pole about which Manipulate Pole tool adjusts rotation.
* User can drag pole location (arrow) with mouse.
* User can change pole location via text entry (or spinboxes).
* User can set pole location to north pole ('constrain latitude') for Virtual Geomagnetic poles.
* User can constrain pole location to moving/fixed stage pole of focused feature.
* Shows current moving and fixed plate ids.
* Checkbox to track and update stage pole location over time.
* New lighting canvas tool (currently disabled until official release of volume viz. in 1.5):
* Enables/disables lighting per primitive type.
* Optionally detach light direction from camera.
* User drags light direction (arrow) with mouse.
* Support directional and non-directional (radial) lighting on rasters both with and without surface relief.
* Removed dependency on ImageMagick.
* Also solves OpenCL problem with Snow Leopard builds running on Lion and above.
* No longer show warning dialog when loading files (due to different GPGIM version) - was too irritating.
* We still show a warning dialog when saving (when GPGIM version differs).
* Canvas tool tab icons are now static again (to avoid confusion).
* New SubductionZone properties 'gpml:subductionZoneSystem' and 'gpml:subductionZoneSystemOrder'.
* A new colour palette for deformation networks.
* Changes to loaded data (during reading) are now marked as unsaved changes.
* Fix half-stage rotation to have multiple stages instead of just one stage.
* GPGIM now has version 1 and 2 half-stage rotations - new files use version 2.
* Add spreading asymmetry to mid-ocean ridges.
* Avoid out-of-memory error when compiling on windows with pre-compiled headers.
* Happens on 12-core Windows 8.1 machine in Visual Studio 2005.
* Allow no variation in export (template) filename when exporting a single frame.
* In case user does not want the reconstruction time in the single exported filename.
* Fix stage rotations when loading PLATES rotation file so that each stage rotation takes the short way around the globe (instead of long way).
* Fixed "New Feature Collection" being displayed after importing a raster or 3D scalar field.
* Enable forcing use of python embedded in application (bundle).
* Set program name properly and set Py_IgnoreEnvironmentFlag before initializing python interpreter.
* Fixed OpenGL invalid enum error (GL_INVALID_ENUM) when creating render buffer object for depth/stencil buffer.
* Fixed crash bug due to dangling parent pointer in FeatureHandle when parent FeatureCollectionHandle is destroyed but its children are not.
* Co-registration:
* Improved retrieval of feature's birth attributes.
* Improved retrieval of seed features.
* Improved data mining Orange widgets layout.
* Create Feature dialog:
* Add the 'relative plate id' to the common properties page for those feature types supporting it (currently only MotionPath).
* The default topological polygon or network feature type is 'gpml:TopologicalClosedPlateBoundary' and 'gpml:TopologicalNetwork'.
* Added GPGIM support for 'gpgim:defaultGeometryProperty' for feature types with more than one geometry property.
* Defaults to the appropriate property name for the digitised geometry property.
* Remember the previous feature type selection when switching pages.
* But when invoking dialog set to a default feature type (based on geometry property type).
* Dateline wrapper now outputs the original input polyline or polygon if it got swallowed up by the dateline (because lay entirely *on* the dateline).
* Set dateline wrapping on by default for saving and exporting to Shapefile format.
* Report error to console for duplicate reconstruction tree edges.
* Fixed MotionPath colour differing from seed colour when changing the colour scheme.
* Force user to specify a 'gpml:relativePlateId' when creating a MotionPath feature (even if it's zero).
* Velocities:
* Added velocity smoothing for domain points near plate boundary when calculating velocities on surfaces.
* No velocity boundary smoothing for domain points within a deforming region.
* Add export velocity smoothing options to all velocity exports (not just TERRA).
* GeometryOnSphere proximity tests also return the closest point on the geometry (from the test point).
* Volume visualisation:
* Improved iso-surface performance when using surface fill mask with no visible walls.
* Uses min/max depth range of volume fill regions to limit the range over which rays are sampled (instead of sampling through entire globe).
* Merged isosurface ray-tracing shader program optimisations from Tobias Pfaffelmoser and Michael Kern.
* Added support for regional (non-global) scalar fields in shader programs and scalar field import.
* Support transparent colours when rendering isosurface and cross sections of 3D scalar fields.
* Separate input channels for cross sections and surface polygons mask (no longer share same input channel).
* Surface polygons mask can now apply to cross-sections.
* Added option to disable surface polygons mask without having to disconnect input layers.
* Colour palette improvements;
* Optionally remap scalar/gradient palette range.
* Adjust range using mean and standard deviation of scalar field.
* Separate controls for scalar value and gradient magnitude value.
* Separate colour palettes for scalar and gradient colour modes.
* Added default colour palette for gradient magnitudes.
* Increase iso-surface performance, when rotating globe with mouse, by reducing iso-surface sampling rate by a user-defined factor.
* Only show 3D scalar field GUI controls that apply to the current settings of the controls.
* Fixed framebuffer completeness error when using stencil buffer without depth buffer.
* Allow more than one feature with same feature id when searching topological sections.
* Allows comparing two topological datasets (from two different files) with same feature ids.
* User must limit each topological dataset/layer to search only its own topological sections (not all global sections).
* Avoid aborting GPlates when encounter unsupported field in CPT file.
* Disable a total reconstruction sequence (or pole within a sequence).
* Fixed "Show Point/Line/etc Geometries" hiding geometries in the canvas tools (workflows).
GPlates 1.3
===========
Changes since 1.2:
* New GROT (GPlates Rotation) file format:
* Extended PLATES4 rotation format to include a much richer set of metadata attributes.
* Metadata is specified using @Attribute"Value".
* Can have multi-valued attributes @Attribute"Value1|Value2|Value3" such as @MPRS"101|NAM|North America".
* Nested attributes can be specified as @Attribute:subattribute"Value" such as @MPRS:pid"101".
* Can nest even further with @Attribute:subattribute:subsubattribute"Value" such as @DC:contributor:id"RDM".
* Dublin Core Document Metadata describing file content (attribute @DC).
* Supports standard attribute aliases such as AU --> DC:contributor:id (Author).
* Inclusion of Hellinger rotation statistics for the individual rotation poles.
* Simple commenting/uncommenting of rotation poles using '#' (previously: 999).
* Inclusion of bibliographic and reference data for the whole rotation file and individual rotations.
* Information on Geological Time Scales.
* New "Moving plate rotation sequences" and associated metadata.
* Display and edit metadata.
* Load and save ".grot" file retaining non-metadata comments in original line sequence in file.
* Surface relief lighting:
* A single channel height field raster is converted into a (multi-resolution) surface normal map.
* Conversion performed on GPU for improved performance on systems with sufficient OpenGL support.
* The diffuse lighting of this normal map modulates the colour of a second raster.
* Default heightfield scale based on raster statistics.
* User can adjust default heightfield scale to increase/decrease relief lighting effect.
* Currently lighting is non-directional.
* Integrated Orange and GPlates using socket-based command server built into GPlates. Orange widgets include:
* Getting the birth time of seed features.
* Getting the co-registration result, at a specified time and specified association, for all seed features.
* Getting a time sequence of co-registration results for a specified association for all seed features.
* Getting the co-registration result of a specified association for all seed features each at their respective birth time.
* Added socket-based command server:
* Clients can connect to a running GPlates executable and issue commands.
* Currently commands are co-registration based including retrieving seed and associations, begin time, etc.
* Is used by Orange data mining widgets to query co-registrations results from GPlates.
* Defaults to localhost and port 9777.
* Completed raster co-registration data mining front-end.
* Volume visualisation:
* Extended OpenGL support for ray-tracing shader (multiple render targets, texture arrays, geometry shaders).
* Import sequence of 2D floating-point rasters (one per depth layer) representing scalar field.
* GPML file linked to GPSF file containing cube map format 3D scalar field data and statistics.
* Load colour palette used to convert scalar value or gradient magnitude to colour.
* Colour by depth (iso-surface only) or scalar value or gradient magnitude.
* Colour-by-depth:
* Front side of iso-surface blends from blue at core to cyan at surface.
* Back side of iso-surface blends from red at core to yellow at surface.
* Front side faces regions with higher scalar value than the iso-surface.
* Render vertical cross-sections (depth-extruded surface polylines).
* Interactively manipulate surface polylines to change cross-sections.
* Render surfaces of constant scalar value (iso-surfaces).
* Render single deviation window:
* One opaque iso-surface and two surrounding (+/- delta) semi-transparent iso-surfaces.
* Render double deviation window:
* Two single deviation windows at different isovalues.
* 'Surface' deviation window renders intersection of deviation window with surface of globe:
* Rendered as solid fill or isolines.
* Supports limiting iso-surface rendering to a specific depth range.
* Supports limiting iso-surface rendering to regions under surface polygons:
* Supports vertically-extruded walls at surface polygon boundaries.
* Render iso-surface single/double deviation window on vertical walls as isolines.
* Globe is semi-transparent when rendering 3D scalar field:
* Opaque surface geometries (polylines, rasters, filled polygons) can occlude scalar field.
* Scalar field is not ray-traced for those pixels occluded by surface geometries.
* Deformation:
* Calculates instantaneous strain rates for each triangle in topological network triangulation.
* Displays dilitation (and second invariant of) strain rate as palette coloured triangles.
* Points of feature geometry falling inside a topological network are incrementally deformed over time span:
* Time span and increment determined by user.
* Rigidly reconstructed outside time span and outside network's deformation time period(s).
* Or inside a rigid interior block of an active topological network.
* Incremental deformation due to interpolation of rotations of nodes of network's triangulation.
* Geometry deformation stored in a look up table containing deformation time spans.
* Can calculate/display velocities at deformed geometry points.
* Deformed geometry points accumulate strain over time.
* Accumulated principle strain can be displayed as cross symbol.
* Avoid topological network dateline/pole issues by using azimuthal equal area projection.
* Fixed occasional missing network node velocities:
* Velocities at topological network nodes no longer need a velocity layer to calculate.
* Velocity now calculated using rotation tree(s) of plate/network-nodes (that velocity point is inside).
* Previously used default rotation layer.
* Velocities work with network interiors that are resolved topological *lines* (ie, two levels of velocity indirection).
* "Reconstructed Geometries" layers connected to (deformed by) topological network layers cannot provide topological sections for any topology layers.
* Added optional topological sections layer connections to topology layers.
* Enables duplicating topology layers but with different topological sections.
* No connections defaults to global lookup of topological sections.
* One or more connections limits search to connected layers.
* Performance optimisations including:
* Filled topological network rendering performance improved significantly.
* Avoid expensive generation of 'constrained' delaunay triangulation where possible.
* Such as PolygonOnSphere network boundary for point inclusion test instead.
* Use spatial sort when generating delaunay triangulation.
* Avoid velocity/deformation calculations unless needed.
* Handle points falling in sliver between polygon-on-sphere network boundary and convex hull of delaunay triangulation.
* Due to convex hull in 2D non-gnomic projection.
* Added support for reading OGR GMT format files:
* Currently supports Shapefile and OGRGMT formats.
* Re-factored Shapefile I/O to support generalised OGR library formats:
* Fixed Shapefile loading prematurely finishing when encountering null geometry.
* Avoid exporting flowline/motion-path seed points during reconstructed feature geometry export.
* Only require either a begin or end time Shapefile/OGR attribute in read file to generate a GML time period property.
* Support half-stage rotation feature types in Shapefile/OGR (save/load reconstruction method and left/right plate ids).
* Added 'GPGIM_TYPE' field to Shapefile/OGR containing full GPGIM feature type (in addition to regular 2-letter code).
* Preference given to 'GPGIM_TYPE' if present with fall back to 'TYPE'.
* Both saved on writing with 'TYPE' to eventually be phased out in a future release.
* New resolved topological 'lines':
* Used to create dynamic polylines (instead of dynamic polygons).
* Can only reference static reconstructed features.
* Dynamic plate polygons and networks can reference dynamic lines in their boundaries (and interiors).
* Separated Build Topology tool into three tools (for lines, polygons and networks).
* Improved performance when building/editing a topology with lots of sections.
* Canvas tool workflows:
* Canvas tool bar has a tab for each workflow.
* Avoids running out of space for canvas tool buttons.
* Groups workflow related tools together.
* Canvas tool bar is dockable.
* SVG export:
* Includes rasters, 3D scalar fields and filled polygons:
* Each raster and scalar field and filled polygon layer is embedded as a single image.
* Image dimensions are user-specified and can be arbitrarily large.
* Centralised GPlates Geological Information Model (GPGIM):
* GPGIM stored in a single XML file.
* GPGIM XML file stored in GPlates executable as resource and read in at startup.
* All dialogs, etc, in GPlates query the centralised GPGIM.
* Create Feature dialog provides list of non-common properties to add to created feature.
* Also forces user to create non-optional properties.
* Add Property dialog highlights those properties allowed by the feature's type.
* Change Feature Type dialog allows user to change property names of non-geometry properties.
* If property type is same in previous and new feature type.
* Topological lines/polygons no longer feature-type-specific.
* Can be used in place of regular static geometries.
* Support for upgrading a feature (such as merging topological network boundary and interior properties into single network property).
* Attempts to fix time-dependent property errors on reading by converting between time-dependent types where possible.
* 'gpml:UnclassifiedFeature' is now special case and can accept 'any' number of 'any' GPGIM properties.
* Added finite rotation calculator dialog:
* Add and subtract finite rotations, calculate a finite rotation between two points and rotate a point using a finite rotation.
* Added velocity domain generators for Terra and Lat/Lon meshes.
* Export velocities to Terra (text) format.
* Export velocities to CitcomS global format.
* Added GMT velocity export. Exports domain point (lon/lat), velocity as X/Y/Z or colat/lon or magnitude/angle, and plate id.
* Added file output options to velocity export.
* New About Data Sources menu item opens web page.
* Sort by filename in Manage Feature Collections dialog.
* Added save, reload and unload 'selected' groups of files in Manage Feature Collections dialog.
* Save only modified files when Save All button clicked in Manage Feature Collections dialog.
* Filled polygons in 2D map views.
* Map background restricted to map lat/lon region - outside the map region is now black.
* Improved filled polygon performance.
* Now use stencil buffer to generate polygon interior fill mask.
* Fixed filled polygons not always sorting by plate ID.
* Ensure rendered geometries draw order not affected by using spatial partition.
* Reconstructed feature geometries now sorted by plate ID.
* Calculate velocities in "Calculated Velocity Fields" layer:
* 'of domain points' - calculate velocities of reconstructed points.
* 'of surfaces' - calculate velocities of surfaces that intersect domain points.
* Velocity layer inputs connections are now green "Reconstructed Geometries" layers instead of feature collections.
* Velocity layer no longer has rotation tree input connection (rotations provided by velocity domain input layers.
* Can calculate velocities at half-stage rotation features (eg, mid-ocean ridge) and at seed points of flowlines.
* Fixed incorrect velocities when anchor plate id is non-zero.
* Allow velocity domain points with non-zero plate id to rotate when calculating velocity 'by surfaces'.
* Added velocity arrow screen space density controls.
* Added velocity arrow body/head size controls.
* Improved performance of velocity arrow rendering at high zoom levels (view frustum culling).
* Fixed out-of-memory crash when zooming to high levels with velocity arrows loaded.
* Merged command-line version of GPlates into main GUI version of GPlates.
* Added command-line command 'equivalent-total-rotation'.
* Added stage rotation command-line command with asymmetric spreading rate option.
* More GUI options for rotation export (stage and total).
* Added "%R" for default reconstruction tree layer in export dialog template filename.
* Add export file option to save each exported file to its own directory.
* Separated resolved topology export into a 'Citcoms' specific export (the current export) and a new generic export:
* Generic export similar to reconstructed feature geometries export.
* Support filled polylines (in addition to filled polygons).
* Can choose focused feature by clicking interior of filled polyline/polygon (including filled topological networks).
* Added fill polygon opacity and intensity.
* Raster reconstruction now works with 'self-intersecting' polygons.
* Added age CPT button in raster layer (for when loaded raster is an age grid).
* Age grid test done in hardware shader program for runtime systems that support OpenGL shaders.