/// <summary>
        /// 插入从MapServer获取到的JSON数据
        /// </summary>
        /// <param name="features"></param>
        /// <returns></returns>
        public int InsertFeaturesByJson(JArray features)
        {
            int featureNum = 0;

            try {
                ZFeatureCursor cursor = Insert(true);
                foreach (JObject feature in features)
                {
                    try
                    {
                        ZFeatureBuffer buffer = CreateFeatureBuffer();
                        buffer.SetShapeByJson(feature.Value <JObject>("geometry"));
                        buffer.SetAttrsByJson(feature.Value <JObject>("attributes"));
                        cursor.InsertFeature(buffer);
                    }
                    catch (Exception ex)
                    {
                        Logger.log("ZFeatureClass.InsertFeaturesByJson", ex);
                    }
                    featureNum++;
                }
                cursor.Flush();
            }
            catch (Exception ex)
            {
                Logger.log("ZFeatureClass.InsertFeaturesByJson", ex);
            }
            return(featureNum);
        }
 /// <summary>
 /// 是否存在记录
 /// </summary>
 /// <param name="filter"></param>
 /// <returns></returns>
 public bool HasRecord(ZFilter filter)
 {
     using (ZFeatureCursor cursor = Search(filter))
     {
         return(cursor.NextFeature() != null);
     }
 }
        /// <summary>
        /// 从另一张表复制数据
        /// </summary>
        /// <param name="ZFClass"></param>
        /// <param name="clear">是否清空原数据</param>
        public void CopyFrom(ZFeatureClass ZFClass, bool clear = false)
        {
            if (clear)
            {
                Delete();
            }
            ZFeatureCursor cursor = ZFClass.Search();

            CopyFrom(cursor);
        }
        /// <summary>
        /// 从查询结果复制数据
        /// </summary>
        /// <param name="cursor"></param>
        public void CopyFrom(ZFeatureCursor cursor)
        {
            IFeatureCursor this_cursor = featureClass.Insert(true);
            ZFeature       feature     = null;

            while (null != (feature = cursor.NextFeature()))
            {
                IFeatureBuffer buffer = featureClass.CreateFeatureBuffer();
                buffer.Shape = feature.Shape.geometry;
                for (int i = 0; i < featureClass.Fields.FieldCount; i++)
                {
                    buffer.Value[i] = feature.GetValue(i);
                }
                this_cursor.InsertFeature(buffer);
            }
            this_cursor.Flush();
        }