Is it possible to make triangle with coordinate ( longitude , latitude , z )?

Hello everyone

I have a geoJson file with arrays of coordinates ( Longitude , Latitude , z ), I want to know is it possible to make a triangle mesh with Longitude, Latitude and z? or should I convert all of them to meter?

possibly we would need to see your dataset though.

Hi @Pryme8

this is my PG:
https://www.babylonjs-playground.com/#VKBJN#933

hey arash he is iranian right i am so glad see you here :slight_smile:

Hi @nasimiasl , glad to see both of you :slight_smile: :slight_smile:

I think this should help:

Thank you so much @Evgeni_Popov, I wanted to know is it any way to use it with babylonJS? , because its almost like arcRotateCamera location base.

can you share more geo data i can test it ?


You need to convert the python code to javascript, but it should be straightforward, just prefix with Math. the trigonometric functions and replace c4d.vector by BABYLON.Vector3.

Might be something useful in this topic Help with globe extrusion - Questions - Babylon.js

Hi, Thanks a lot.

these are parts of the GeoJSON file :

[
{
“type”: “Feature”,
“geometry”: {
“type”: “GeometryCollection”,
“geometries”: [
{
“type”: “Polygon”,
“coordinates”: [
[
[-4.67365, 58.43086, 5247.6],
[-4.68345, 58.43669, 3850.5],
[-4.66852, 58.42488, 2523.2],
[-4.67365, 58.43086, 5247.6]
]
]
},
{
“type”: “Polygon”,
“coordinates”: [
[
[-4.67365, 58.43086, 5247.6],
[-4.66889, 58.42739, 5176.2],
[-4.66852, 58.42488, 2523.2],
[-4.67365, 58.43086, 5247.6]
]
]
},
{
“type”: “Polygon”,
“coordinates”: [
[
[-4.66478, 58.42441, 5127.4],
[-4.66852, 58.42488, 2523.2],
[-4.65904, 58.41819, 2639.8],
[-4.66478, 58.42441, 5127.4]
]
]
},
{
“type”: “Polygon”,
“coordinates”: [
[
[-4.66478, 58.42441, 5127.4],
[-4.65982, 58.42082, 5074.7],
[-4.65904, 58.41819, 2639.8],
[-4.66478, 58.42441, 5127.4]
]
]
},
{
“type”: “Polygon”,
“coordinates”: [
[
[-4.66478, 58.42441, 5127.4],
[-4.66852, 58.42488, 2523.2],
[-4.66754, 58.42642, 5158.1],
[-4.66478, 58.42441, 5127.4]
]
]
},
{
“type”: “Polygon”,
“coordinates”: [
[
[-4.66889, 58.42739, 5176.2],
[-4.66754, 58.42642, 5158.1],
[-4.66852, 58.42488, 2523.2],
[-4.66889, 58.42739, 5176.2]
]
]
},
{
“type”: “Polygon”,
“coordinates”: [
[
[-4.65904, 58.41819, 2639.8],
[-4.6592, 58.42037, 5071.8],
[-4.65982, 58.42082, 5074.7],
[-4.65904, 58.41819, 2639.8]
]
]
},
{
“type”: “Polygon”,
“coordinates”: [
[
[-4.67365, 58.43086, 5247.6],
[-4.68345, 58.43669, 3850.5],
[-4.67795, 58.43403, 5341.8],
[-4.67365, 58.43086, 5247.6]
]
]
},
{
“type”: “Polygon”,
“coordinates”: [
[
[-4.68345, 58.43669, 3850.5],
[-4.69912, 58.44885, 4974.8],
[-4.69197, 58.44421, 5532],
[-4.68345, 58.43669, 3850.5]
]
]
},
{
“type”: “Polygon”,
“coordinates”: [
[
[-4.68345, 58.43669, 3850.5],
[-4.68702, 58.44061, 5457.3],
[-4.69197, 58.44421, 5532],
[-4.68345, 58.43669, 3850.5]
]
]
},
{
“type”: “Polygon”,
“coordinates”: [
[
[-4.68586, 58.43977, 5443],
[-4.68345, 58.43669, 3850.5],
[-4.67795, 58.43403, 5341.8],
[-4.68586, 58.43977, 5443]
]
]
},
{
“type”: “Polygon”,
“coordinates”: [
[
[-4.68345, 58.43669, 3850.5],
[-4.68586, 58.43977, 5443],
[-4.68702, 58.44061, 5457.3],
[-4.68345, 58.43669, 3850.5]
]
]
},
{
“type”: “Polygon”,
“coordinates”: [
[
[-4.68586, 58.43977, 5443],
[-4.68347, 58.43804, 5417],
[-4.67795, 58.43403, 5341.8],
[-4.68586, 58.43977, 5443]
]
]
},
{
“type”: “Polygon”,
“coordinates”: [
[
[-4.69197, 58.44421, 5532],
[-4.69912, 58.44885, 4974.8],
[-4.69609, 58.44718, 5551.8],
[-4.69197, 58.44421, 5532]
]
]
},
{
“type”: “Polygon”,
“coordinates”: [
[
[-4.67795, 58.43403, 5341.8],
[-4.67976, 58.43535, 5381.5],
[-4.68347, 58.43804, 5417],
[-4.67795, 58.43403, 5341.8]
]
]
},
{
“type”: “Polygon”,
“coordinates”: [
[
[-4.65982, 58.42082, 5074.7],
[-4.66144, 58.422, 5099.6],
[-4.66478, 58.42441, 5127.4],
[-4.65982, 58.42082, 5074.7]
]
]
},
{
“type”: “Polygon”,
“coordinates”: [
[
[-4.69609, 58.44718, 5551.8],
[-4.69912, 58.44885, 4974.8],
[-4.69808, 58.44859, 5543.7],
[-4.69609, 58.44718, 5551.8]
]
]
},
{
“type”: “Polygon”,
“coordinates”: [
[
[-4.70217, 58.45152, 5549.8],
[-4.70336, 58.45206, 5183],
[-4.69912, 58.44885, 4974.8],
[-4.70217, 58.45152, 5549.8]
]
]
},
{
“type”: “Polygon”,
“coordinates”: [
[
[-4.70217, 58.45152, 5549.8],
[-4.69808, 58.44859, 5543.7],
[-4.69912, 58.44885, 4974.8],
[-4.70217, 58.45152, 5549.8]
]
]
},
{
“type”: “Polygon”,
“coordinates”: [
[
[-4.71029, 58.45737, 5602.1],
[-4.70516, 58.45367, 5562.6],
[-4.70716, 58.45488, 5300.2],
[-4.71029, 58.45737, 5602.1]
]
]
},
}

Thank you so much, there is also another problem which is the Earth isn’t exactly sphere.

Thanks a lot.

i change some of your data because all point is so close :slight_smile:

for explain how you can make them

you can use this methods

var _null = ‘helper for exact null value’;

function def(a, d) {
if (a != undefined && a != null) return (d != undefined && d != null ? a : true);
else
if (d != _null)
return (d != undefined && d != null ? d : false);
return null;
}
function rotate_xy(pr1, pr2, alpha) {
pp2 = { x: pr2.x - pr1.x, y: pr2.y - pr1.y };

return {
    x: pr1.x + pp2.x * cos(alpha) - pp2.y * sin(alpha),
    y: pr1.y + pp2.x * sin(alpha) + pp2.y * cos(alpha)
};

}

function r_y(n, a, c) {

c = def(c, { x: 0, y: 0, z: 0 });
var c1 = { x: c.x, y: c.y, z: c.z };
c1.x = c1.x;
c1.y = c1.z;

var p = rotate_xy(c1, { x: n.x, y: n.z }, a);

n.x = p.x;
n.z = p.y;

return n;

}

function r_x(n, a, c) {

c = def(c, { x: 0, y: 0, z: 0 });
var c1 = { x: c.x, y: c.y, z: c.z };
c1.x = c1.y;
c1.y = c1.z;

var p = rotate_xy(c1, { x: n.y, y: n.z }, a);

n.y = p.x;
n.z = p.y;

return n;

}

function r_z(n, a, c) {

c = def(c, { x: 0, y: 0, z: 0 });
var c1 = { x: c.x, y: c.y, z: c.z };
var p = rotate_xy(c1, { x: n.x, y: n.y }, a);

n.x = p.x;
n.y = p.y;

return n; 

}

// final function for convert geoPos to pos
// use scale = 0.001 for see the better result
// deg =0.017453292519943295 convert your deg to rad
function pos( geoP){

var p = { x: 0, z: 0, y: 0 };

 p.z =  (geoP[2]*scale);
 p = r_x(p,geoP[0]*deg);
 p = r_y(p,geoP[1]*deg);  
  return p;

}

Thank you so much @nasimiasl, Its great. Thank you for devoting your time to answering my question and helping me to increase my knowledge on this question. :pray:t2: :pray:t2:

we use each other knowledge for learn in this forum so thanks from Bjs community