Maison base de données tutoriel mysql MongoDB中空间数据的存储和操作

MongoDB中空间数据的存储和操作

Jun 07, 2016 pm 03:56 PM
d mongodb 使用 存储 官方 操作 数据 空间

本文使用官方C# Driver,实现在MongoDB中存储,查询空间数据(矢量) 空间数据的存储 本例中,从一个矢量文件(shapefile格式)中读取矢量要素空间信息以及属性表,并写入到MongoDB中去,其中读取shapefile文件以及将空间信息转成json的功能通过Ogr库实现 [csh

本文使用官方C# Driver,实现在MongoDB中存储,查询空间数据(矢量)

空间数据的存储

本例中,从一个矢量文件(shapefile格式)中读取矢量要素空间信息以及属性表,并写入到MongoDB中去,其中读取shapefile文件以及将空间信息转成json的功能通过Ogr库实现
          
[csharp] view plaincopyprint?01.//打开MongoDB的Collection  
02.           MongoDatabase db = server.GetDatabase("aa"); 
03.           MongoCollection colSheng = db.GetCollection("sheng"); 
04.           //使用Ogr库打开Shapefile文件  
05.           DataSource ds = Ogr.Open(@"c:\temp\sheng.shp", 0); 
06.           Layer lyr = ds.GetLayerByIndex(0); 
07.           //读取要素数量和字段数量  
08.           int feaCount = lyr.GetFeatureCount(0); 
09.           int fieldCount = lyr.GetLayerDefn().GetFieldCount(); 
10.           //读取所有字段名  
11.           List fieldNames  =new List(); 
12.           for (int i = 0; i 13.           { 
14.               fieldNames.Add(lyr.GetLayerDefn().GetFieldDefn(i).GetName()); 
15.           } 
16.           //循环将所有要素添加到MongoDB中  
17.           for (int i = 0; i 18.           { 
19.               //使用Ogr库将矢量要素的空间信息转成Json格式  
20.               Feature fea = lyr.GetFeature(i); 
21.               Geometry geo = fea.GetGeometryRef();       
22.               string json = geo.ExportToJson(null); 
23.                
24.               BsonDocument doc = new BsonDocument(); 
25.                
26.               //将Json格式的空间信息存到Collection中  
27.               //BsonValue bs = BsonValue.Create(json);                  //这种方法是不可以的,添加到库里之后无法使用空间查询语句查询  
28.               BsonValue bs2 = BsonDocument.Parse(json);               //这种方法才是正确的  
29.               //doc.Add(new BsonElement("geom", bs));  
30.               doc.Add(new BsonElement("geo",bs2)); 
31.               //通过循环将所有字段的属性信息存入Collection中  
32.               for (int j = 0; j 33.               { 
34.                   string tmpFieldVal = fea.GetFieldAsString(j); 
35.                   doc.Add(new BsonElement(fieldNames[j],tmpFieldVal)); 
36.               } 
37.               var res  = colSheng.Insert(doc);                 
38.           } 
 //打开MongoDB的Collection
            MongoDatabase db = server.GetDatabase("aa");
            MongoCollection colSheng = db.GetCollection("sheng");
            //使用Ogr库打开Shapefile文件
            DataSource ds = Ogr.Open(@"c:\temp\sheng.shp", 0);
            Layer lyr = ds.GetLayerByIndex(0);
            //读取要素数量和字段数量
            int feaCount = lyr.GetFeatureCount(0);
            int fieldCount = lyr.GetLayerDefn().GetFieldCount();
            //读取所有字段名
            List fieldNames  =new List();
            for (int i = 0; i             {
                fieldNames.Add(lyr.GetLayerDefn().GetFieldDefn(i).GetName());
            }
            //循环将所有要素添加到MongoDB中
            for (int i = 0; i             {
                //使用Ogr库将矢量要素的空间信息转成Json格式
                Feature fea = lyr.GetFeature(i);
                Geometry geo = fea.GetGeometryRef();     
                string json = geo.ExportToJson(null);
               
                BsonDocument doc = new BsonDocument();
               
                //将Json格式的空间信息存到Collection中
                //BsonValue bs = BsonValue.Create(json);                  //这种方法是不可以的,添加到库里之后无法使用空间查询语句查询
                BsonValue bs2 = BsonDocument.Parse(json);               //这种方法才是正确的
                //doc.Add(new BsonElement("geom", bs));
                doc.Add(new BsonElement("geo",bs2));
                //通过循环将所有字段的属性信息存入Collection中
                for (int j = 0; j                 {
                    string tmpFieldVal = fea.GetFieldAsString(j);
                    doc.Add(new BsonElement(fieldNames[j],tmpFieldVal));
                }
                var res  = colSheng.Insert(doc);               
            }

然后,可以查看一下存储到MongoDB中的矢量数据是什么样的

在命令行中输入:
[csharp] view plaincopyprint?01.> db.sheng.find().limit(1) 
> db.sheng.find().limit(1)

结果为
[javascript] view plaincopyprint?01.{ "_id" : ObjectId("5371bf4e1dbba31914224563"), "geo" : { "type" : "Polygon", "coordinates" : [ [ [ 89.8496, 14.093 ], [ 90.3933, 14.004 ], [ 90.2708, 13.4708 ], [ 89.7284, 13.5597 ], [ 89.8496, 14.093 ] ] ] }, "pyname" : "sx", "boxtype" : "inter", "date" : "2012/6/5 12:41:42" } 
{ "_id" : ObjectId("5371bf4e1dbba31914224563"), "geo" : { "type" : "Polygon", "coordinates" : [ [ [ 89.8496, 14.093 ], [ 90.3933, 14.004 ], [ 90.2708, 13.4708 ], [ 89.7284, 13.5597 ], [ 89.8496, 14.093 ] ] ] }, "pyname" : "sx", "boxtype" : "inter", "date" : "2012/6/5 12:41:42" }

可以看到名称为geo的这个Field,里边存的就是矢量要素的坐标信息

空间查询与空间索引

可用的空间操作包括geointersect,geowithin,near等,参考http://docs.mongodb.org/manual/reference/operator/query-geospatial/
这里使用geointersect为例说明一下:
          
[csharp] view plaincopyprint?01.//获取Collection  
02.           MongoDatabase db = server.GetDatabase("aa"); 
03.           MongoCollection colSheng = db.GetCollection("sheng"); 
04.         
05.           //定义一个查询框或查询多边形  
06.           var poly = GeoJson.Polygon
07.               GeoJson.Position(100, 20), 
08.               GeoJson.Position(110, 20), 
09.               GeoJson.Position(110, 40), 
10.               GeoJson.Position(100, 40), 
11.               GeoJson.Position(100, 20)); 
12.           //以这个查询多边形为条件定义一条查询语句  
13.           var queryFilter2 = Query.GeoIntersects("geo", poly); 
14.           //进行查询,输出MongoCursor  
15.           cur = colSheng.FindAs(queryFilter2).SetFields( "pyname", "date"); 
16.           //获取结果  
17.           var res = cur.ToArray(); 
18.           for (int i = 0; i 19.           { 
20.               BsonDocument tmpDoc = res.ElementAt(i); 
21.               //do something you want  
22.           } 
 //获取Collection
            MongoDatabase db = server.GetDatabase("aa");
            MongoCollection colSheng = db.GetCollection("sheng");
        
            //定义一个查询框或查询多边形
            var poly = GeoJson.Polygon(
                GeoJson.Position(100, 20),
                GeoJson.Position(110, 20),
                GeoJson.Position(110, 40),
                GeoJson.Position(100, 40),
                GeoJson.Position(100, 20));
            //以这个查询多边形为条件定义一条查询语句
            var queryFilter2 = Query.GeoIntersects("geo", poly);
            //进行查询,输出MongoCursor
            cur = colSheng.FindAs(queryFilter2).SetFields( "pyname", "date");
            //获取结果
            var res = cur.ToArray();
            for (int i = 0; i             {
                BsonDocument tmpDoc = res.ElementAt(i);
                //do something you want
            }

关于空间索引,可参考http://docs.mongodb.org/manual/applications/geospatial-indexes/
这里不详细说了

空间查询运算的问题:

在使用GeoIntersect进行空间查询时,遇到了查询结果与ArcGIS不一致的情况,详细看了一下,像是MongoDB的一个BUG(目前使用的是2.6.0版本)

具体信息如下(在命令行中操作):

Collection中的坐标

[csharp] view plaincopyprint?01.> db.test.find() 
02.{ "_id" : ObjectId("535884771dbba31858ad2101"), "geo" : { "type" : "Polygon", "coordinates" : [ [ [ 96.722, 38.755 ], [ 97.3482, 38.6922 ], [ 97.1674, 38.0752 ], [ 96.5474, 38.1383 ], [ 96.722, 38.755 ] ] ] } } 
> db.test.find()
{ "_id" : ObjectId("535884771dbba31858ad2101"), "geo" : { "type" : "Polygon", "coordinates" : [ [ [ 96.722, 38.755 ], [ 97.3482, 38.6922 ], [ 97.1674, 38.0752 ], [ 96.5474, 38.1383 ], [ 96.722, 38.755 ] ] ] } }

使用的查询语句

[csharp] view plaincopyprint?01.> db.test.find({ "geo" : { "$geoIntersects" : { "$geometry" : { "type" : "Polygon", "coordinates" : [[[91.0, 33.0], [102.0, 33.0], [102.0, 38.0], [91.0, 38.0], [91.0, 33.0]]] } } } }) 
> db.test.find({ "geo" : { "$geoIntersects" : { "$geometry" : { "type" : "Polygon", "coordinates" : [[[91.0, 33.0], [102.0, 33.0], [102.0, 38.0], [91.0, 38.0], [91.0, 33.0]]] } } } })

查询结果:

[csharp] view plaincopyprint?01.{ "_id" : ObjectId("535884771dbba31858ad2101"), "geo" : { "type" : "Polygon", "coordinates" : [ [ [ 96.722, 38.755 ], [ 97.3482, 38.6922 ], [ 97.1674, 38.0752 ], [ 96.5474, 38.1383 ], [ 96.722, 38.755 ] ] ] } } 
{ "_id" : ObjectId("535884771dbba31858ad2101"), "geo" : { "type" : "Polygon", "coordinates" : [ [ [ 96.722, 38.755 ], [ 97.3482, 38.6922 ], [ 97.1674, 38.0752 ], [ 96.5474, 38.1383 ], [ 96.722, 38.755 ] ] ] } }

但可以看到,collection中只有一条记录,且该记录所有点的Y坐标均大于38.0,为什么查询结果里,这条记录与语句中的Box相交呢。。。很奇怪

因为有这样的问题,所以还不放心直接将空间查询用于实际应用,而是通过一种变通的方法进行简单的空间查询,测试后发现,可能是由于空间索引的问题,这种方式查询比自带的GeoIntersects方法要快

大致思路为:为每一条记录均生成一个最小外接矩形,得到其xmax,xmin,ymax,ymin四个边界值,用数值的形式保存至Collection中,每次进行空间查询时,首先通过最小外接矩形进行一次筛选,判断这些最小外接矩形与查询语句中多边形的最小外接矩形之间的关系,如果相交,那么进行第二步判断,通过Ogr组件判断实际的多边形是否相交,返回最后结果

首先是生成最小外接矩形的代码:
          
[csharp] view plaincopyprint?01.//获取Collection  
02.            MongoDatabase db = server.GetDatabase("aa"); 
03.            MongoCollection colsheng= db.GetCollection("sheng"); 
04.            //查询所有记录  
05.            var cur = colsheng.FindAllAs(); 
06.            long totalCount = cur.Count(); 
07.            //遍历所有记录  
08.            for (int i = 0; i 09.            { 
10.                if (i * 1000 >= totalCount) continue; 
11.                int skip = i * 1000; 
12.                var cur2 = cur.Clone().SetSkip(skip).SetLimit(1000); 
13.                var lst = cur2.ToArray(); 
14.                for (int j = 0; j 15.                { 
16.                    //获取一条记录对应的BsonDocument  
17.                    BsonDocument doc = lst[j]; 
18.                        var id = doc["_id"];                    //该记录对应的ID  
19.                        BsonDocument geo = doc["geo"].ToBsonDocument();     
20.                        string geostr = geo[1].ToString();        //该记录对应空间信息的Json字符串  
21.                        List coords = GetCoordLstFromString(geostr);        //解析Json串,获得所有点的坐标(这里子函数就省略了)  
22.                        double xmin = 181, xmax = -181, ymin = 91, ymax = -91;        //四个边界值,由于图层为经纬度,所以初值设为这些值  
23.                        //计算最大最小值  
24.                        for (int k = 0; k 25.                        { 
26.                            if (k % 2 == 0) 
27.                            { 
28.                                if (coords[k] 29.                                if (coords[k] > xmax) xmax = coords[k]; 
30.                            } 
31.                            else 
32.                            { 
33.                                if (coords[k] 34.                                if (coords[k] > ymax) ymax = coords[k]; 
35.                            } 
36.                        } 
37.                        //将最大最小值写入Collection  
38.                        var tmpQuery = Query.EQ("_id", id); 
39.                        var tmpUpdate = MongoDB.Driver.Builders.Update.Set("xmax", xmax); 
40.                        var tmpres = col02c.Update(tmpQuery, tmpUpdate); 
41.                        tmpUpdate = MongoDB.Driver.Builders.Update.Set("xmin", xmin); 
42.                        tmpres = col02c.Update(tmpQuery, tmpUpdate); 
43.                        tmpUpdate = MongoDB.Driver.Builders.Update.Set("ymax", ymax); 
44.                        tmpres = col02c.Update(tmpQuery, tmpUpdate); 
45.                        tmpUpdate = MongoDB.Driver.Builders.Update.Set("ymin", ymin); 
46.                        tmpres = col02c.Update(tmpQuery, tmpUpdate); 
47.                    } 
48.                } 
//获取Collection
            MongoDatabase db = server.GetDatabase("aa");
            MongoCollection colsheng= db.GetCollection("sheng");
            //查询所有记录
            var cur = colsheng.FindAllAs();
            long totalCount = cur.Count();
            //遍历所有记录
            for (int i = 0; i             {
                if (i * 1000 >= totalCount) continue;
                int skip = i * 1000;
                var cur2 = cur.Clone().SetSkip(skip).SetLimit(1000);
                var lst = cur2.ToArray();
                for (int j = 0; j                 {
                    //获取一条记录对应的BsonDocument
                    BsonDocument doc = lst[j];
                        var id = doc["_id"];                    //该记录对应的ID
                        BsonDocument geo = doc["geo"].ToBsonDocument();   
                        string geostr = geo[1].ToString();        //该记录对应空间信息的Json字符串
                        List coords = GetCoordLstFromString(geostr);        //解析Json串,获得所有点的坐标(这里子函数就省略了)
                        double xmin = 181, xmax = -181, ymin = 91, ymax = -91;        //四个边界值,由于图层为经纬度,所以初值设为这些值
                        //计算最大最小值
                        for (int k = 0; k                         {
                            if (k % 2 == 0)
                            {
                                if (coords[k]                                 if (coords[k] > xmax) xmax = coords[k];
                            }
                            else
                            {
                                if (coords[k]                                 if (coords[k] > ymax) ymax = coords[k];
                            }
                        }
                        //将最大最小值写入Collection
                        var tmpQuery = Query.EQ("_id", id);
                        var tmpUpdate = MongoDB.Driver.Builders.Update.Set("xmax", xmax);
                        var tmpres = col02c.Update(tmpQuery, tmpUpdate);
                        tmpUpdate = MongoDB.Driver.Builders.Update.Set("xmin", xmin);
                        tmpres = col02c.Update(tmpQuery, tmpUpdate);
                        tmpUpdate = MongoDB.Driver.Builders.Update.Set("ymax", ymax);
                        tmpres = col02c.Update(tmpQuery, tmpUpdate);
                        tmpUpdate = MongoDB.Driver.Builders.Update.Set("ymin", ymin);
                        tmpres = col02c.Update(tmpQuery, tmpUpdate);
                    }
                }

然后是查询的代码:
          
[csharp] view plaincopyprint?01.//获取Collection  
02.            MongoDatabase db = server.GetDatabase("aa"); 
03.            MongoCollection colSheng = db.GetCollection("zy02c"); 
04.            //第一步,通过四边界筛选,  
05.            var query = Query.And(Query.GT("xmax", 91.0), Query.LT("xmin", 102.0), Query.GT("ymax", 33.0), Query.LT("ymin", 38.0)); 
06.            var cur = colSheng.FindAs(query); 
07.            //定义第二空间运算时的条件多边形(Ogr格式的定义)  
08.            Geometry queryGeoLR = new Geometry(wkbGeometryType.wkbLinearRing); 
09.            queryGeoLR.AddPoint(91.0, 33.0,0); 
10.            queryGeoLR.AddPoint(102.0, 33.0,0); 
11.            queryGeoLR.AddPoint(102.0, 38.0,0); 
12.            queryGeoLR.AddPoint(91.0, 38.0,0); 
13.            queryGeoLR.AddPoint(91.0, 33.0,0); 
14.            Geometry queryGeo = new Geometry(wkbGeometryType.wkbPolygon); 
15.            queryGeo.AddGeometry(queryGeoLR); 
16.            //循环查询到的结果  
17.            var lst = cur.ToArray(); 
18.            for (int i = lst.Length-1; i >=0; i--) 
19.            { 
20.                //获取当前记录对应的BsonDocument  
21.                BsonDocument doc = lst[i]; 
22.                var id = doc["_id"];            //当前记录的ID  
23.                BsonDocument geo = doc["geo"].ToBsonDocument(); 
24.                string geostr = geo[1].ToString();        //当前记录对应空间信息的Json字符串  
25.                 
26.                //通过Json串获取坐标值,并生成对应的Geometry对象  
27.                List coords = GetCoordLstFromString(geostr); 
28.                Geometry resGeoLR = new Geometry(wkbGeometryType.wkbLinearRing); 
29.                for (int j = 0; j 30.                { 
31.                    resGeoLR.AddPoint_2D(coords[j], coords[j + 1]); 
32.                } 
33.                resGeoLR.AddPoint_2D(coords[0], coords[1]); 
34.                Geometry resGeo = new Geometry(wkbGeometryType.wkbPolygon); 
35.                resGeo.AddGeometry(resGeoLR); 
36.                //判断是该Geometry与条件多边形是否相交  
37.                if (resGeo.Intersects(queryGeo)) 
38.                { 
39.                        //do something  
40.                } 
41.            } 

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelle version est généralement utilisée pour mongodb ? Quelle version est généralement utilisée pour mongodb ? Apr 07, 2024 pm 05:48 PM

Il est recommandé d'utiliser la dernière version de MongoDB (actuellement 5.0) car elle fournit les dernières fonctionnalités et améliorations. Lors de la sélection d'une version, vous devez prendre en compte les exigences fonctionnelles, la compatibilité, la stabilité et le support de la communauté. Par exemple, la dernière version comporte des fonctionnalités telles que les transactions et l'optimisation du pipeline d'agrégation. Assurez-vous que la version est compatible avec l'application. Pour les environnements de production, choisissez la version avec support à long terme. La dernière version bénéficie d'un support communautaire plus actif.

La vitalité de la super intelligence s'éveille ! Mais avec l'arrivée de l'IA qui se met à jour automatiquement, les mères n'ont plus à se soucier des goulots d'étranglement des données. La vitalité de la super intelligence s'éveille ! Mais avec l'arrivée de l'IA qui se met à jour automatiquement, les mères n'ont plus à se soucier des goulots d'étranglement des données. Apr 29, 2024 pm 06:55 PM

Je pleure à mort. Le monde construit à la folie de grands modèles. Les données sur Internet ne suffisent pas du tout. Le modèle de formation ressemble à « The Hunger Games », et les chercheurs en IA du monde entier se demandent comment nourrir ces personnes avides de données. Ce problème est particulièrement important dans les tâches multimodales. À une époque où rien ne pouvait être fait, une équipe de start-up du département de l'Université Renmin de Chine a utilisé son propre nouveau modèle pour devenir la première en Chine à faire de « l'auto-alimentation des données générées par le modèle » une réalité. De plus, il s’agit d’une approche à deux volets, du côté compréhension et du côté génération, les deux côtés peuvent générer de nouvelles données multimodales de haute qualité et fournir un retour de données au modèle lui-même. Qu'est-ce qu'un modèle ? Awaker 1.0, un grand modèle multimodal qui vient d'apparaître sur le Forum Zhongguancun. Qui est l'équipe ? Moteur Sophon. Fondé par Gao Yizhao, doctorant à la Hillhouse School of Artificial Intelligence de l’Université Renmin.

Vitesse Internet lente des données cellulaires sur iPhone : correctifs Vitesse Internet lente des données cellulaires sur iPhone : correctifs May 03, 2024 pm 09:01 PM

Vous êtes confronté à un décalage et à une connexion de données mobile lente sur iPhone ? En règle générale, la puissance de l'Internet cellulaire sur votre téléphone dépend de plusieurs facteurs tels que la région, le type de réseau cellulaire, le type d'itinérance, etc. Vous pouvez prendre certaines mesures pour obtenir une connexion Internet cellulaire plus rapide et plus fiable. Correctif 1 – Forcer le redémarrage de l'iPhone Parfois, le redémarrage forcé de votre appareil réinitialise simplement beaucoup de choses, y compris la connexion cellulaire. Étape 1 – Appuyez simplement une fois sur la touche d’augmentation du volume et relâchez-la. Ensuite, appuyez sur la touche de réduction du volume et relâchez-la à nouveau. Étape 2 – La partie suivante du processus consiste à maintenir le bouton sur le côté droit. Laissez l'iPhone finir de redémarrer. Activez les données cellulaires et vérifiez la vitesse du réseau. Vérifiez à nouveau Correctif 2 – Changer le mode de données Bien que la 5G offre de meilleures vitesses de réseau, elle fonctionne mieux lorsque le signal est plus faible

L'US Air Force présente son premier avion de combat IA de grande envergure ! Le ministre a personnellement effectué l'essai routier sans intervenir pendant tout le processus, et 100 000 lignes de code ont été testées 21 fois. L'US Air Force présente son premier avion de combat IA de grande envergure ! Le ministre a personnellement effectué l'essai routier sans intervenir pendant tout le processus, et 100 000 lignes de code ont été testées 21 fois. May 07, 2024 pm 05:00 PM

Récemment, le milieu militaire a été submergé par la nouvelle : les avions de combat militaires américains peuvent désormais mener des combats aériens entièrement automatiques grâce à l'IA. Oui, tout récemment, l’avion de combat IA de l’armée américaine a été rendu public pour la première fois, dévoilant ainsi son mystère. Le nom complet de ce chasseur est Variable Stability Simulator Test Aircraft (VISTA). Il a été personnellement piloté par le secrétaire de l'US Air Force pour simuler une bataille aérienne en tête-à-tête. Le 2 mai, le secrétaire de l'US Air Force, Frank Kendall, a décollé à bord d'un X-62AVISTA à la base aérienne d'Edwards. Notez que pendant le vol d'une heure, toutes les actions de vol ont été effectuées de manière autonome par l'IA ! Kendall a déclaré : "Au cours des dernières décennies, nous avons réfléchi au potentiel illimité du combat air-air autonome, mais cela a toujours semblé hors de portée." Mais maintenant,

La différence entre nodejs et vuejs La différence entre nodejs et vuejs Apr 21, 2024 am 04:17 AM

Node.js est un environnement d'exécution JavaScript côté serveur, tandis que Vue.js est un framework JavaScript côté client permettant de créer des interfaces utilisateur interactives. Node.js est utilisé pour le développement côté serveur, comme le développement d'API de service back-end et le traitement des données, tandis que Vue.js est utilisé pour le développement côté client, comme les applications monopage et les interfaces utilisateur réactives.

Les robots Tesla travaillent dans les usines, Musk : Le degré de liberté des mains atteindra 22 cette année ! Les robots Tesla travaillent dans les usines, Musk : Le degré de liberté des mains atteindra 22 cette année ! May 06, 2024 pm 04:13 PM

La dernière vidéo du robot Optimus de Tesla est sortie, et il peut déjà fonctionner en usine. À vitesse normale, il trie les batteries (les batteries 4680 de Tesla) comme ceci : Le responsable a également publié à quoi cela ressemble à une vitesse 20 fois supérieure - sur un petit "poste de travail", en sélectionnant et en sélectionnant et en sélectionnant : Cette fois, il est publié L'un des points forts de la vidéo est qu'Optimus réalise ce travail en usine, de manière totalement autonome, sans intervention humaine tout au long du processus. Et du point de vue d'Optimus, il peut également récupérer et placer la batterie tordue, en se concentrant sur la correction automatique des erreurs : concernant la main d'Optimus, le scientifique de NVIDIA Jim Fan a donné une évaluation élevée : la main d'Optimus est l'un des robots à cinq doigts du monde. le plus adroit. Ses mains ne sont pas seulement tactiles

Tutoriel BTCC : Comment lier et utiliser le portefeuille MetaMask sur l'échange BTCC ? Tutoriel BTCC : Comment lier et utiliser le portefeuille MetaMask sur l'échange BTCC ? Apr 26, 2024 am 09:40 AM

MetaMask (également appelé Little Fox Wallet en chinois) est un logiciel de portefeuille de cryptage gratuit et bien accueilli. Actuellement, BTCC prend en charge la liaison au portefeuille MetaMask. Après la liaison, vous pouvez utiliser le portefeuille MetaMask pour vous connecter rapidement, stocker de la valeur, acheter des pièces, etc., et vous pouvez également obtenir un bonus d'essai de 20 USDT pour la première liaison. Dans le didacticiel du portefeuille BTCCMetaMask, nous présenterons en détail comment enregistrer et utiliser MetaMask, ainsi que comment lier et utiliser le portefeuille Little Fox dans BTCC. Qu'est-ce que le portefeuille MetaMask ? Avec plus de 30 millions d’utilisateurs, MetaMask Little Fox Wallet est aujourd’hui l’un des portefeuilles de crypto-monnaie les plus populaires. Son utilisation est gratuite et peut être installée sur le réseau en tant qu'extension

Le classement QS 2024 publié ! Informatique Le MIT domine la liste, l'Université Tsinghua est 11ème et l'Université de Pékin est 15ème. Le classement QS 2024 publié ! Informatique Le MIT domine la liste, l'Université Tsinghua est 11ème et l'Université de Pékin est 15ème. Apr 18, 2024 pm 09:04 PM

Le classement mondial des universités 2024QS par sujet est ici ! Dans l’ensemble, il y a peu de changement par rapport à 2023. Selon les informations du site officiel, le classement mondial des universités 2024QS par sujet couvre 55 subdivisions et 5 principaux domaines académiques. Au total, 1 559 universités ont participé au classement, dont 64 sont de nouveaux visages cette année (c'est-à-dire qu'elles n'apparaîtront pas dans le classement 2023). Parmi ces 64 collèges et universités, 14 apparaissent véritablement pour la première fois. Parmi eux se trouve l’Université de l’Académie chinoise des sciences. Selon les matières raffinées, la musique est une nouvelle matière introduite cette année. En outre, les classements en science des données et en intelligence artificielle ont été élargis, avec 51 nouvelles universités ajoutées au classement. Les cinq premiers de la liste globale sont : le Massachusetts Institute of Technology, l'Université de Cambridge, l'Université d'Oxford et l'Université Harvard.

See all articles