当前位置: 首页 > news >正文

独立网站怎样建设做推广的公司一般都叫什么

独立网站怎样建设,做推广的公司一般都叫什么,网站公司建设都招聘那些职位,广西建设培训网Qgis 可以加载很多数据源,像shapefile 文件, gdb文件等,还可以直接链接企业数据库。在这里,我只介绍比较常用的本地数据库 gdb。gdb 是esri 开发的数据库,gdb数据库不是开源的,qigs用了OpenFileGdb的驱动读…

Qgis 可以加载很多数据源,像shapefile 文件, gdb文件等,还可以直接链接企业数据库。在这里,我只介绍比较常用的本地数据库 gdb。gdb 是esri 开发的数据库,gdb数据库不是开源的,qigs用了OpenFileGdb的驱动读写的,这个驱动目前是支持读写的。Qgis 读写数据库做了一层封装的,读写都是通过Qgis 的图层类实现,所以这里和图层一起介绍。

1、数据库操作

1.1、数据库的读取

读取数据库里面的某个表,从数据库的表到Qgis的QgsVectorLayer 矢量图层类中。参数表示 读取 D盘 test.gdb 的 名为 point 的表。注意这里 |layername= 附近 不要有空格,否则可能会读取失败。

QString layerName="point";
QString dbPath="D:\\test.gdb"+"|layername="+layerName;
QgsVectorLayer* gdbLayer = new QgsVectorLayer(dbPath, layerName, QStringLiteral("ogr"));

1.2、数据库的写入

这里会将QgsVectorLayer 写入到gdb中。

QgsVectorFileWriter::SaveVectorOptions options;
options.actionOnExistingFile = QgsVectorFileWriter::AppendToLayerNoNewFields;
options.driverName = "openFileGDB";
options.layerName = layerName;QgsCoordinateTransform ct;
ct = QgsCoordinateTransform(vectorlayer->crs(), vectorlayer->crs(), vectorlayer->transformContext());
ptions.ct = ct;
QgsVectorFileWriter::writeAsVectorFormatV3(vectorlayer, cds.workSpacePath(), vectorlayer->transformContext(), options);

其中QgsVectorFileWriter::AppendToLayerNoNewFields是个枚举值。 通过它来确定数据库记录是覆盖还是增加。

  enum ActionOnExistingFile
    {
      //! Create or overwrite file
      CreateOrOverwriteFile,

      //! Create or overwrite layer
      CreateOrOverwriteLayer,

      //! Append features to existing layer, but do not create new fields
      AppendToLayerNoNewFields,

      //! Append features to existing layer, and create new fields if needed
      AppendToLayerAddFields
    };

2、图层的操作

Qgis的图层是Qgis封装的通用类,Qgis 用它屏蔽了数据源的不同,使用它可以操作所有的数据源。数据库的字段和记录都是通过Qgis的图层来实现的。Qgis 里面有各种类型的图层,跟gdb 有关的主要是QgsVectorLayer的矢量图层。

2.1、 图层的新建和添加

        图层第一种创建方式就是从数据库读取的图层。这个时候图层是与数据库表同步的。获取方法参考 1.1 数据库的读取。

        图层第二种创建是直接创建内存图层, 创建一个名字叫 test的点图层,并设置坐标系。

QgsVectorLayer* layer=new QgsVectorLayer("PointZ", "test", "memory");
layer->setCrs(QgsProject::instance()->crs());

这种创建的第一个参数是Qgis 的类型,该类型是个枚举,点,线,面都可以创建,枚举如下,创建的时候直接写字符串就可以。

enum Type{Unknown = 0,Point = 1,LineString = 2,Polygon = 3,Triangle = 17,MultiPoint = 4,MultiLineString = 5,MultiPolygon = 6,GeometryCollection = 7,CircularString = 8,CompoundCurve = 9,CurvePolygon = 10, //13, //should be 10. Seems to be correct in newer PostGIS versionsMultiCurve = 11,MultiSurface = 12,NoGeometry = 100, //attributes onlyPointZ = 1001,LineStringZ = 1002,PolygonZ = 1003,TriangleZ = 1017,MultiPointZ = 1004,MultiLineStringZ = 1005,MultiPolygonZ = 1006,GeometryCollectionZ = 1007,CircularStringZ = 1008,CompoundCurveZ = 1009,CurvePolygonZ = 1010,MultiCurveZ = 1011,MultiSurfaceZ = 1012,PointM = 2001,LineStringM = 2002,PolygonM = 2003,TriangleM = 2017,MultiPointM = 2004,MultiLineStringM = 2005,MultiPolygonM = 2006,GeometryCollectionM = 2007,CircularStringM = 2008,CompoundCurveM = 2009,CurvePolygonM = 2010,MultiCurveM = 2011,MultiSurfaceM = 2012,PointZM = 3001,LineStringZM = 3002,PolygonZM = 3003,MultiPointZM = 3004,MultiLineStringZM = 3005,MultiPolygonZM = 3006,GeometryCollectionZM = 3007,CircularStringZM = 3008,CompoundCurveZM = 3009,CurvePolygonZM = 3010,MultiCurveZM = 3011,MultiSurfaceZM = 3012,TriangleZM = 3017,Point25D = 0x80000001,LineString25D,Polygon25D,MultiPoint25D,MultiLineString25D,MultiPolygon25D};

这种方式再介绍下指定地方坐标系的情况,str 填写的是坐标系的 wkt 字符串。其中layer 是QgsVectorLayer * 的指针对象。

QString str = "";
QgsCoordinateReferenceSystem crs = QgsCoordinateReferenceSystem::fromWkt(str);
layer->setCrs(crs);

这两种图层创建后,其实还没加入到Qgis 工程中。通过QgsProject 加入到工程中。代码如下。

QgsProject::instance()->addMapLayer(layer);

加入到工程中的图层,可以通过名字或者ID 重新获取指针。下面代码是获取名字叫test的图层。mapLayersByName 返回的是QList 列表对象。因为Qgis 多个图层可以叫同一个名字。当然可以通过layer的id获取,再次不多介绍了。

QgsVectorLayer* layer = qobject_cast<QgsVectorLayer*>(QgsProject::instance()->mapLayersByName("test").at(0));

2.2、 图层的删除

其中di 是 图层QgsVectorLayer * 的指针对象 的图层id; 这个里面会自动删除指针对象。

 QgsProject::instance()->removeMapLayer(id);

2.3、添加字段

Qgis 添加字段涉及到 QgsField 的类,如下代码,添加了一个String 类型的 Name 字段,一个Double类型的X 字段和一个Double类型的Y字段。Qgis 是用Qt 开发,经常会用到一些qt的语法。其中layer 是QgsVectorLayer * 的指针对象。

QList<QgsField> fieldList;
fieldList.append(QgsField("Name", QVariant::String));
fieldList.append(QgsField("X", QVariant::Double));
fieldList.append(QgsField("Y", QVariant::Double));QgsVectorDataProvider* provider=layer->dataProvider();
provider->addAttributes(fieldList);
layer->updateFields();

3 、要素操作

图层和字段创建好了后,就需要对要素做进一步操作。主要实现增删改查,图层的要素编辑其实有两种,一种在编辑模式下,一种不在编辑模式下。两种的区别是编辑模式考虑的用户操作体验,可以做回撤,重做等操作,批处理时,效率相对较低。非编辑模式下直接操作同步数据库,效率比较高。这里先介绍下非编辑模式。Qgis的要素类是QgsFeature。 代表着数据库中的一行记录。

3.1 、添加要素

添加要素的代码如下,首先,创建QgsFature对象,其中layer 是QgsVectorLayer * 的指针对象。

QgsFeature feature = QgsFeature(layer->fields());
QgsVectorDataProvider* provider = layer->dataProvider();
provider->addFeature(feature );

也可以用addFeatures 批量添加,这种方式应该更快一些。QList 可以换成QgsFeatureList 是一样,QgsFeatureList 是QList<QgsFeature> 的宏命令。

QList<QgsFeature> features;
QgsFeature feature = QgsFeature(layer->fields());
features.push_back(feature );
QgsVectorDataProvider* provider = layer->dataProvider();
provider->addFeatures(features);

添加几何字段值,在平面坐标系下这样操作。在setGeometry 的参数是QgsGeometry。这个对象的具体操作会在后面介绍。注意,添加的几何,要与创建的图层一致,图层是点,添加点,图层是线,添加线,

feature.setGeometry(QgsGeometry::fromPointXY(QgsPointXY(1000, 1000)));

添加字段属性值,单个添加。

feature.setAttribute("X", 1000);
feature.setAttribute("Y", 1000);

也可以批量添加属性。但是要注意属性的顺序。

feature.setAttributes(QgsAttributes() << "Point 1");

3.2、要素更新

要素更新,主要更新地理字段和属性字段。可以使用下面的方法批量添加地理字段和属性字段。其中index 是字段的所在字段索引,id 是QgsFeature的 id ,layer  是 QgsVectorLayer * 的指针对象。 类型是QgsFeatureId。其中geo 和 amap 的不在举例子了。

	QgsGeometry geo;QgsAttributeMap amap;amap.insert(index, 1000);QgsChangedAttributesMap camap;QgsGeometryMap geoMap;camap.insert(id,amap);geoMap.insert(id,geo);layer->dataProvider()->changeFeatures(camap, geoMap);

3.3、要素删除

        通过以下方法删除要素

QgsFeatureIds ids;
layer->dataProvider()->deleteFeatures(ids);

4、小节

        我们介绍了数据库的操作,图层和要素的操作,其中图层和要素实在非编辑模式下的操作,也是比较高效率的操作。编辑模式下的操作其实类似,在后面qigs的编辑功能里面在介绍。


文章转载自:
http://workman.przc.cn
http://transposal.przc.cn
http://togated.przc.cn
http://refinedly.przc.cn
http://cleanup.przc.cn
http://eave.przc.cn
http://triune.przc.cn
http://ragworm.przc.cn
http://percurrent.przc.cn
http://product.przc.cn
http://dorsiflexion.przc.cn
http://beclomethasone.przc.cn
http://apocopate.przc.cn
http://oscular.przc.cn
http://fluxmeter.przc.cn
http://cardiotomy.przc.cn
http://pogonotomy.przc.cn
http://aegean.przc.cn
http://kaph.przc.cn
http://insulinize.przc.cn
http://autoinjector.przc.cn
http://endplay.przc.cn
http://primaeval.przc.cn
http://spiggoty.przc.cn
http://heronsbill.przc.cn
http://harvesting.przc.cn
http://reticulocyte.przc.cn
http://concisely.przc.cn
http://gath.przc.cn
http://earthshaking.przc.cn
http://camphoraceous.przc.cn
http://galluses.przc.cn
http://heitiki.przc.cn
http://rinse.przc.cn
http://abas.przc.cn
http://taproot.przc.cn
http://sortilege.przc.cn
http://whomever.przc.cn
http://machicoulis.przc.cn
http://masticatory.przc.cn
http://expansive.przc.cn
http://immalleable.przc.cn
http://farmeress.przc.cn
http://inhibitor.przc.cn
http://apogee.przc.cn
http://thumbnail.przc.cn
http://sly.przc.cn
http://hydrological.przc.cn
http://hanoi.przc.cn
http://garnetiferous.przc.cn
http://bustup.przc.cn
http://mastoideal.przc.cn
http://lunitidal.przc.cn
http://zoantharia.przc.cn
http://buhlwork.przc.cn
http://paroxysm.przc.cn
http://canine.przc.cn
http://inessential.przc.cn
http://ionosonde.przc.cn
http://carsick.przc.cn
http://orphic.przc.cn
http://pandanaceous.przc.cn
http://mugwump.przc.cn
http://restrainedly.przc.cn
http://rationally.przc.cn
http://cadwallader.przc.cn
http://wampanoag.przc.cn
http://approbatory.przc.cn
http://mattamore.przc.cn
http://holand.przc.cn
http://extemporisation.przc.cn
http://irony.przc.cn
http://covey.przc.cn
http://polycentric.przc.cn
http://dislike.przc.cn
http://psychedelicatessen.przc.cn
http://principle.przc.cn
http://abednego.przc.cn
http://lg.przc.cn
http://gameland.przc.cn
http://bastard.przc.cn
http://talaria.przc.cn
http://mcmlxxvi.przc.cn
http://aspic.przc.cn
http://archaism.przc.cn
http://lazuline.przc.cn
http://acinacifoliate.przc.cn
http://sbw.przc.cn
http://pundit.przc.cn
http://venire.przc.cn
http://gummosis.przc.cn
http://tautomerize.przc.cn
http://bobbed.przc.cn
http://zithern.przc.cn
http://truckle.przc.cn
http://pensively.przc.cn
http://cetology.przc.cn
http://hindbrain.przc.cn
http://whifflow.przc.cn
http://springtide.przc.cn
http://www.15wanjia.com/news/88640.html

相关文章:

  • 南京网站开发培训怎么创建自己的网址
  • 织梦做中英文网站详细步骤百度统计
  • 做网站的版式会侵权吗网络销售是做什么的
  • 专门做单页的网站澎湃新闻
  • dz 一步一步教你做网站在线生成个人网站免费
  • 效果图网站猪八戒网络营销的三种方式
  • 一级a做爰片软件网站东莞市民最新疫情
  • 做政协网站软件的公司湖口网站建设
  • 织梦 做网站 知乎沈阳网站推广优化
  • 多媒体网站开发信息流优化师发展前景
  • 网站的特点武汉谷歌seo
  • 网站导航栏种类推广平台排行榜
  • 昆明云南微网站搭建哪家好网页模板建站系统
  • 中国最好的网站建设公司网站维护中
  • flash网站的制作搜索广告排名
  • 珠海网站建设联系方式网站服务器一年的费用
  • 成都谁做捕鱼网站电商平台排行榜前十名
  • 广东网站建设软件网络服务电话
  • 网站建设平台选择seo工程师是什么职业
  • 商丘做网站的电话厦门百度推广怎么做
  • 微信公众号 网站开发 2016营销推广方案模板
  • 深圳网站定制多少钱网站页面排名优化
  • 一个专门做ppt的网站百度公司怎么样
  • 网站上的vR场景贴图怎么做的百度sem
  • 万户网络做网站怎么样如何进行网站的宣传和推广
  • 深圳网站制作公司咨询seo中国
  • 福田人才市场深圳百度seo整站
  • 做外账要登什么网站seo搜索
  • 做网站上传服务器十大网络推广公司排名
  • 企业网站的建设内容武汉百度推广电话