Skip to content

Instantly share code, notes, and snippets.

View bertt's full-sized avatar

Bert Temme bertt

View GitHub Profile
{
"buffers":[
{
"byteLength":16
}
],
"bufferViews":[
{
"buffer":0,
"byteOffset":0,
@bertt
bertt / subtree_json_sample_0_0_0
Last active July 5, 2022 18:21
subtree_json_Sample
{
"buffers":[
{
"byteLength":16
}
],
"bufferViews":[
{
"buffer":0,
"byteOffset":0,
@bertt
bertt / gist:f277667644eed70a95c8392a2a22b4c9
Created June 29, 2022 13:46
tileset layerjson sample
{
"tilejson": "2.1.0",
"name": "i09bz13857",
"description": "",
"version": "1.1.0",
"format": "quantized-mesh-1.0",
"attribution": "",
"schema": "tms",
"tiles": [ "{z}/{x}/{y}.terrain?v={version}" ],
"projection": "EPSG:4326",
GDAL 3.5.0, dev-4b77cd8111ce6c6b79cb0c75101394367b9e135e, released 2022/05/03
$ ogrinfo --formats
Supported Formats:
FITS -raster,vector- (rw+): Flexible Image Transport System
PCIDSK -raster,vector- (rw+v): PCIDSK Database File
netCDF -raster,multidimensional raster,vector- (rw+vs): Network Common Data Format
PDS4 -raster,vector- (rw+vs): NASA Planetary Data System 4
VICAR -raster,vector- (rw+v): MIPL VICAR file
JP2OpenJPEG -raster,vector- (rwv): JPEG-2000 driver based on OpenJPEG library
// test
var result = PointRotator.RotatePoint(new Vector2(5.0f, 0), new Vector2(0, 0), Math.PI / 2 );
Assert.IsTrue(Math.Round(result.X, 0) == 0f);
Assert.IsTrue(Math.Round(result.Y,0) == -5);
// RotatePoint method
public static class PointRotator
frame.Camera.EulerAngles.Y * 180 / Math.PI
0 degrees: blue towards device, red to the right, green up
positive [0 - 180] turning to left
negative [0 - -180] turning to right
@bertt
bertt / convert_4326_3857
Last active July 21, 2023 11:10
Convert from Longitude/Latitude (4326) to 3857 (Spherical Mercator)
public static double[] ToSphericalMercatorFromWgs84(double Longitude, double Latitude)
{
var x = Longitude * 20037508.34 / 180;
var y = Math.Log(Math.Tan((90 + Latitude) * Math.PI / 360)) / (Math.PI / 180);
y = y * 20037508.34 / 180;
return new double[] { x, y };
}
public static double[] ToWgs84FromSphericalMercator(double x, double y)
{
@bertt
bertt / convert_4326_4978.txt
Last active July 21, 2022 21:52
convert latitude/longitude (4326) to cartesian/ecef (4978)
Two methods to get from 4326 (longitude, latitude) to 4978 (cartesian - ecef). TLDR; use DotSpatial.Positioning when possible (because much faster).
1] using DotSpatial.Positioning (fast):
```
private static System.Numerics.Vector3 ToCartesian(double lat, double lon, double alt)
{
var pos3d = new Position3D(new Distance(alt, DistanceUnit.Meters), new Latitude(lat), new Longitude(lon));
var res1 = pos3d.ToCartesianPoint();
@bertt
bertt / ogr_read_multipatch_shapefile.cs
Created April 26, 2020 08:22
OG Read multipatch shapefile
Ogr.RegisterAll();
var driver = Ogr.GetDriverByName("ESRI Shapefile");
var shp = @"D:\dev\github.com\Mattgerg\ShapefileSharp\ShapefileSharp Tests\Data\multipatch.shp";
var dataSource = driver.Open(shp, 0);
var layer = dataSource.GetLayerByIndex(0);
Console.WriteLine(layer.GetFeatureCount(0));
Console.WriteLine(layer.GetGeomType().ToString());
for(var i = 0; i < layer.GetFeatureCount(0); i++)
{
var feature = layer.GetFeature(i);
@bertt
bertt / ogr_create_shapefile.cs
Created April 26, 2020 07:50
OGR Create shapefile
Ogr.RegisterAll();
Gdal.AllRegister();
var driver = Ogr.GetDriverByName("ESRI Shapefile");
var data_source = driver.CreateDataSource("volcanoes.shp", null);
var sr = new OSGeo.OSR.SpatialReference(string.Empty);
sr.ImportFromEPSG(4326);
var layer = data_source.CreateLayer("volcanoes", sr, wkbGeometryType.wkbPoint, null);
var fdefn = new FieldDefn("Name", FieldType.OFTString);
fdefn.SetWidth(24);
layer.CreateField(fdefn,1);