如何如何使用wind数据库查P2P数据

苹果/安卓/wp
& 附件下载
wind数据库Ipo全部数据.rar
游客无法下载,请后下载,熟悉论坛请点击&&&&&&&&nbsp
经管之家APP:通过论坛APP下载,免流量费,哇! &
1.下载一个附件当天只会扣除您一次下载次数和一次流量费。
2.论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道&&单击右健下载即可(不会算多次下载次数)。
3.论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链&&论坛资源,盗链地址会很快失效。
4.本站为非盈利性质的学术交流网站,网站资源仅供&&教学、研究使用,请下载后24小时内自行删除。()
CDA职业数据分析师认证!
规范标准,行业准入!
一线师资,零基础系统进阶!
咨询联系:陈老师
电话: 010-
邮箱:chengwenjing@pinggu.org
无限扩大经管职场人脉圈!每天抽选10位免费名额,现在就扫& 论坛VIP& 贵宾会员& 可免费加入
加入我们,立即就学扫码下载「就学」app& Join us!& JoinLearn&
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
京ICP证090565号
京公网安备号
论坛法律顾问:王进律师您当前位置: >>
>> 浏览文章
P2P问题平台立案率仅6% 前景堪忧
& 如果光见数量增、不见质量好,跑路成为P2P常见报端的关联词,那P2P必将走进死胡同。
& & 随着互联网金融整治工作的开展,大批P2P平台跑路的爆发触发了集中整治。针对有大量问题平台跑路、提现困难、停止运营或失联的情况,清华大学五道口金融学院常务副院长廖理近期完成的一份研究显示,投资者维权非常困难。据其统计,P2P问题平台的立案比例仅6%,法院判决数量只有19项。这一问题如何解决?
& & 漏洞巨大&问题平台占40%
& & 据廖理介绍,截至2016年4月,全国累计成立的网贷平台超过5000家,其中问题平台约为2200家,问题平台占比竟然超过了40%。&从2013年开始,新成立的平台数量一直在增加,到2015年达到了一个高峰,然后再逐渐下降。但是,问题平台的数量一直在增加,跑路的脚步也一直没停止。据统计,2014年7月、2015年7月、2015年11月,月新增问题平台都超过了100家。&
& & 廖理还向《经济》记者表示,这些问题平台的特征包括地域广、维权难、进入门槛低。&地域广表现在全国30个省市自治区都出现了问题平台,在个别发达的省份,问题平台达到了2/3。&
& & 廖理表示,问题平台中只有1/4能够找到交易规模的数据,但仅这部分平台的交易规模就超过了1800亿元人民币。针对这1800亿元人民币,相应的参与投资者人数也超过了1000万。规模非常大,危害也非常广。
& & 诚然,如果一个标地是几千万甚至上亿元,但拆成100块钱、1000块钱一份,哪个单子出事,可能都会引起群体性事件,因为受众太多,影响巨大,完全不是几个人凑几千万的情况。
& & &由于网络的隐蔽性,问题平台有近80%处于失联状态。这也是为什么我们把问题平台统称为&拟跑路平台&的非常重要的原因。对于这些P2P平台的投资者而言,维权十分困难。&廖理说,&出现问题以后,这些平台网站往往都会停止运营,投资人也往往难以提供证据。&
& & 此外,在问题平台中,仅有23%披露了创始人的信息。而在这些披露了创始人信息的平台中,绝大多数创始团队没有金融背景。这可能导致风险认知的偏差,会对平台的运营带来一些问题。
& & 而且P2P问题平台进入门槛也很低。在问题平台中,49%的平台注册资本金在1000万元以下,84%的在5000万元以下。
& & 问题平台的主要特征还有借款标的期限短、收益率比较高、虚假标的和刷单问题。
& & 阿里巴巴集团副总裁胡晓明曾向《经济》记者举过一个实例,一个P2P的创业者通过平台向公众去兜售信贷资产后,拿钱买全套的爱马仕,好车换了一辆又一辆,12个月后他就倒闭逃之夭夭了。令人担忧的是,现如今一些P2P平台仍能见到该实例的影子。
& & 短标是其中一个明显的特征。8个省市的580个问题平台的数据显示,这些问题平台的大部分标的期限都在半年以内,很少有超过6个月的。廖理认为,&短标是庞氏骗局的一个非常重要的特征。先用大量的短标吸引投资,在进一步大额投资之后,就会出现跑路失联的情况。&
& & 其次是收益率较高。问题平台的收益率是随机的呈现,大部分在16%-20%之间。据Wind数据统计,整个P2P行业的综合利率基本在12%以下,但这些问题平台依然提供了16%-20%甚至更高的收益率。
& & 虚假标和刷单也较为常见,且存在通过秒标吸引投资者注册、进行大额投资以后就出现问题的情况。
& & 如何发现问题平台?
& & 近期,又传闻北京金联所(原名&P2P金融&)已经无法兑付,涉及金额达17.97亿,17万投资者悲壮&踩雷&。而且在&爆雷&声中,不幸&踩雷&的投资者却都难以维权。让人不禁感到,如何发现问题P2P平台成了当务之急。
& & 中国人民大学金融学院副院长赵锡军向《经济》记者介绍,首先因为一笔贷款借出后,有可能一年后问题才爆发,这就形成了风险和时间的错配,而这种错配又使得贷款逾期情况难以被发现。
& & P2P平台高管跑路背后的原因大概可以分成3种,经营不善、涉嫌诈骗和涉嫌自融。
& & 对经营不善的P2P平台而言,其经营动机不存在问题,但是由于风控没有做好、运营没有做好,平台出现问题了。
& & 但廖理认为,更多的平台高管跑路是因为涉嫌诈骗和涉嫌自融。&从目前的情况看有2/3问题平台都是非法运营的,涉嫌诈骗和非法吸收公众存款。他们并不是真正意义上的金融科技公司或者互联网金融公司。&因此投资者一定要擦亮双眼。
& & 投资者可以从运营网站辨别问题平台。单从网站也可以发现问题平台的蛛丝马迹。首先可以看P2P平台是否涉嫌冒充其他公司,问题平台最常用的手段便是直接模仿行业内知名平台的域名,给投资人错误认识。
& & 其次是虚假信息披露或所披露信息自相矛盾。这包括虚假域名备案,虚假运营地址,虚假担保,虚假宣传等。例如,大量没有担保资质的机构进行担保,包括个人对这个标的进行担保,上传了抵押车照片但照片却是另外一个品牌的车。
& & 还有的P2P平台经常不注明资金托管。甚至可以说,绝大部分问题平台往往都会不注明资金托管情况。
& & 问题平台运营时间短是普遍问题。据统计,有2000多家问题平台,平均寿命只有8个月左右。有将近四五十家存在存活期只有1天的情况。
& & 客服缺位、网站简陋粗糙同样是投资者容易察觉到的问题平台硬伤。问题平台里,很大部分的客服电话是无效的,网站建设也十分简陋粗糙,经常有链接无法显示的情况。
& & 投资者发现创始人背景特征存在问题时应特别注意。部分问题平台的创始人可以在网上查到涉及法律纠纷。当一个创始人涉及经济纠纷的时候再做一个网贷平台,动机就非常值得人们去怀疑。
& & 另外,创始人学历、工作经历造假、更换法人代表频繁,这些都是问题平台的创始人背景特征。一旦发现这种情况,投资者就应该更加慎重地思考自己的投资前景。
& & 据赵锡军介绍,在网贷发源地英国,只需2分钟就能核实借款人所有的财务信息。和英国不同,我国的P2P市场因为征信数据仍不完善,使得我们的P2P平台仍在采用最原始的手段在线下搜集信用数据,这不仅需要投入大量的人力和物力,也在借贷环节的最开始便留出了一个大大的漏洞来。
& & 此外,由于客户大都是在银行借不到钱的人,因而还会出现风险累积,甚至就是赤裸裸的坏账,目前P2P平台追偿能力也普遍较弱,所以平台还不得不承担一定的经营风险。
& & 再者,恶性竞争的情况也普遍存在。P2P门槛仍然相对较低,谁都能进来,为了抢夺投资人,就抬高给投资人的收益,为了抢夺借款人,就降低他们的借款利率,这样就会形成一种挤压,无形之中又进一步推高了标的风险。
& & 而在国内各个行政部门的数据库尚未打通的情况下,P2P行业非常需要提升风控意识,不能光等着。赵锡军表示,现在的情况是,钱借出去了,很多P2P平台就先收一笔手续费,中间也不认真地去进行调查,到时钱还不上,欠钱者要担负的违约责任只是个人征信记录会上黑名单,甚至有些人还能用自己家人或朋友的名义借钱,这种情况不仅使得欠钱不还的人难被强制执行,还让黑名单形如虚设。
& & 经过多轮整顿,越来越多的P2P开始从无抵押放贷经营向有抵押放贷经营转变。但由于同质化严重,竞争激烈。有的P2P平台暗自降低了对贷款人审核的严格程度;有的在数据上作假;有的干脆弄起了庞氏骗局。
& & P2P维权难如何解决?
& & 跑路平台众多,无数投资人深受其害,那么在平台跑路后,投资人究竟该怎么才能有效止损,维护自己的正当权益呢?
& & 国脉律师事务所律师包树良向《经济》记者表示,不同问题平台应该有不同的维权方式。
& & &如果平台发生了提现困难,但老板未跑路的,应马上去现场核实情况,如果自己不方便,可以委托就近朋友到现场了解,不要相信平台客服或者网站公告。&包树良说。&如果问题平台有真实的借款人,只是由于期限错配不是自融的话,投资人可以采取一种债权转移方式。但是需要专业人士去核实线下借款人有没有足够的还款能力,有没有还款的意愿。&
& & &如果老板跑路了,投资人在报警的时候,首先应该选择案发当地有专业知识的投资人作为主要连络人,聘请当地有金融经验的律师。投资人维权并不能干预公检法做很多事情,最多只能够督促他们加大力度,加快办案流程,来帮助投资人。&包树良说。
& & 包树良还表示,维权是一种态度而不仅仅是一种口号,每个人都要有维权意识,在碰到任何不公平待遇的时候,每个人都要有勇气站出来,要有对抗到底的决心,依法维权不仅可以保护自身合法权益,还可以督促相关部门加快制定监管细则的脚步。到那时,投资者才能投得放心赚得开心,哪怕亏了也心安理得。
& & 此外,维权要做好打持久战的准备。据包树良介绍,网贷维权的方式往往是受害投资人向公安经侦部门报案,一旦立案,由公安机关侦查布控,效率高,花费少,但进入公诉程序后,不能再撤诉,投资人也无法把控案件的进度。
& & 包树良进一步解释,&网贷平台出事后,通常涉及非法集资类犯罪,属于公诉案件,多数平台跑路案件的回款率低已是极为普遍的现实,投资人也应当有打持久战的心理准备。&
& & 投资者毕竟是个体,所能做的大都较为被动。近期上海便组织了让P2P高管参观监狱的活动,令人深受震动。行业协会和自律组织的自发活动其实更能起到警示教育的作用。
& & 《经济》记者获悉,在监狱负责警官的陪同下,上海部分P2P平台高管们了解了服刑人员的生活和生产情况,亲眼目睹了高墙电网内的铁窗生活,之后纷纷表示要吸取深刻教训,牢牢守住金融底线。
& & 上海市互联网金融行业协会副秘书长孟添向《经济》记者表示,&在监狱进行警示教育是传统金融机构高管经常做的一个活动,但是没想到在互联网金融领域引起了大家的高度关注。&
& & &2016年在国内行业整治、合规化发展的大背景下,防范行业风险和引导行业健康发展是重点也是亮点。通过推动网贷平台、信息披露,加强投资者教育和从业者教育,我认为起到了加强风险排查的作用。&孟添说。
& & 诚然,互联网金融的本质是金融,因此应该建立从业人员的门槛。互联网金融的从业人员应对市场有敬畏之心,有能力进行风险管理,从实体经济的需求出发,利用新技术设计产品,未来才能有更大的发展。
& & 不得不说,P2P的发展有其现实的土壤基础,P2P平台的建设及发展有利于解决市场供给不足问题。P2P的客户群都是银行业覆盖不到的人。他们大多数都没有信用卡,如果银行能够为他们服务的话,早就会给发信用卡了,这群人也是传说中贷不到款的小微企业。银行严格的贷款条件和审贷成本使得众多小微信贷无法有效满足。
& & 因而,P2P平台问题虽多,但却不宜一关了之。该鼓励运营还是要鼓励运营,管的时候一定要管到位,巧妙方法往往能起到良好作用。除了应完善立法、加强管理、方便维权之外,群众提高意识、擦亮双眼也十分必要。
如需转载请注明来源:经济网
版权合作及网站合作电话:010-0-
《经济》杂志订阅电话:010-0-
文章热词:
延伸阅读:使用了TerrainAccessor.cs类120行代码
public virtual TerrainTile GetElevationArray(double north, double south, double west, double east, int samples)
    TerrainTile res = 
    res = new TerrainTile(null);
    res.North = 
    res.South = 
    res.West = 
    res.East = 
    res.SamplesPerTile = 
    res.IsInitialized = 
    res.IsValid = 
    double latrange = Math.Abs(north - south);
    double lonrange = Math.Abs(east - west);
    float[,] data = new float[samples,samples];
    float scaleFactor = (float)1/(samples - 1);
    for(int x = 0; x <  x++)
     for(int y = 0; y <  y++)
     {
      double curLat = north - scaleFactor * latrange * x;
      double curLon = west + scaleFactor * lonrange * y;
     //关键,获取瓦片所有样本点的高程值
      data[x,y] = GetElevationAt(curLat, curLon, 0);
     }
    res.ElevationData = 
    return 
关键代码:data[x,y] = GetElevationAt(curLat, curLon, 0);
GetElevationAt();在TerrainAccessor.cs是抽象方法。真正实现是在TerrainAccessor的子类NltTerrainAccessor中重载实现的。
120行  public override float GetElevationAt(double latitude, double longitude)
    return GetElevationAt(latitude, longitude, m_terrainTileService.SamplesPerTile / m_terrainTileService.LevelZeroTileSizeDegrees);
TerrainAccessor对象哪里来的(即:在哪完成初始化和传入的?)
ConfigurationLoader.cs的Load()方法的97行代码:
TerrainAccessor[] terrainAccessor = getTerrainAccessorsFromXPathNodeIterator(worldIter.Current.Select("TerrainAccessor"),
                         System.bine(cache.CacheDirectory, worldName));
                     World newWorld = new World(
                         worldName,
                         new Microsoft.DirectX.Vector3(0, 0, 0),
                         new Microsoft.DirectX.Quaternion(0, 0, 0, 0),
                         equatorialRadius,
                         cache.CacheDirectory,
                         (terrainAccessor != null ? terrainAccessor[0] : null)//TODO: Oops, World should be able to handle an array of terrainAccessors
                         );
然后通过World对象传入到QuadTileSet类中的。
我们看看getTerrainAccessorsFromXPathNodeIterator方法如何完成完成TerrainAccessor对象。
注意:该方法返回值为TerrainAccessor[],是个数组,为什么呢??(请关注我下一篇文章)
getTerrainAccessorsFromXPathNodeIterator(XPathNodeIterator iter, string cacheDirectory)代码
private static TerrainAccessor[] getTerrainAccessorsFromXPathNodeIterator(XPathNodeIterator iter, string cacheDirectory)
         {
         System.Collections.ArrayList terrainAccessorList = new System.Collections.ArrayList();
         //下面是读取DEM配置XML,并根据配置信息创建TerrainTileService对象和TerrainAccessor对象
             while(iter.MoveNext())
             {
                 string terrainAccessorName = iter.Current.GetAttribute("Name", "");
                 if(terrainAccessorName == null)
                 {
                     // TODO: Throw exception?
                    
                 }
                 XPathNodeIterator latLonBoxIter = iter.Current.Select("LatLonBoundingBox");
                 if(latLonBoxIter.Count != 1)
                 {
                     // TODO: Throw exception?
                    
                 }
                 double north = 0;
                 double south = 0;
                 double west = 0;
                 double east = 0;
                 latLonBoxIter.MoveNext();
                 north = ParseDouble(getInnerTextFromFirstChild(latLonBoxIter.Current.Select("North")));
                 south = ParseDouble(getInnerTextFromFirstChild(latLonBoxIter.Current.Select("South")));
                 west = ParseDouble(getInnerTextFromFirstChild(latLonBoxIter.Current.Select("West")));
                 east = ParseDouble(getInnerTextFromFirstChild(latLonBoxIter.Current.Select("East")));
                 TerrainAccessor[] higerResolutionSubsets = getTerrainAccessorsFromXPathNodeIterator(
                     iter.Current.Select("HigherResolutionSubsets"),
                     bine(cacheDirectory, terrainAccessorName));
                 XPathNodeIterator tileServiceIter = iter.Current.Select("TerrainTileService");
                 if(tileServiceIter.Count == 1)
                 {
                     string serverUrl = 
                     string dataSetName = 
                     double levelZeroTileSizeDegrees = double.NaN;
                     uint numberLevels = 0;
                     uint samplesPerTile = 0;
                     string dataFormat = 
                     string fileExtension = 
                     string compressionType = 
                     tileServiceIter.MoveNext();
                     serverUrl = getInnerTextFromFirstChild(tileServiceIter.Current.Select("ServerUrl"));
                     dataSetName = getInnerTextFromFirstChild(tileServiceIter.Current.Select("DataSetName"));
                     levelZeroTileSizeDegrees = ParseDouble(getInnerTextFromFirstChild(tileServiceIter.Current.Select("LevelZeroTileSizeDegrees")));
                     numberLevels = uint.Parse(getInnerTextFromFirstChild(tileServiceIter.Current.Select("NumberLevels")));
                     samplesPerTile = uint.Parse(getInnerTextFromFirstChild(tileServiceIter.Current.Select("SamplesPerTile")));
                     dataFormat = getInnerTextFromFirstChild(tileServiceIter.Current.Select("DataFormat"));
                     fileExtension = getInnerTextFromFirstChild(tileServiceIter.Current.Select("FileExtension"));
                     compressionType = getInnerTextFromFirstChild(tileServiceIter.Current.Select("CompressonType"));
              //根据配置信息创建TerrainTileService对象和TerrainAccessor对象
                     TerrainTileService tts = new TerrainTileService(
                         serverUrl,
                         dataSetName,
                         levelZeroTileSizeDegrees,
                         (int)samplesPerTile,
                         fileExtension,
                         (int)numberLevels,
                         bine(cacheDirectory, terrainAccessorName),
                         World.Settings.TerrainTileRetryInterval,
                         dataFormat);
                     TerrainAccessor newTerrainAccessor = new NltTerrainAccessor(
                         terrainAccessorName,
                         west,
                         south,
                         east,
                         north,
                         tts,
                         higerResolutionSubsets);
                     terrainAccessorList.Add(newTerrainAccessor);
                 }
                 //TODO: Add Floating point terrain Accessor code
                 //TODO: Add WMSAccessor code and make it work in TerrainAccessor (which it currently doesn't)
             }
             if(terrainAccessorList.Count > 0)
             {
                 return (TerrainAccessor[])terrainAccessorList.ToArray(typeof(TerrainAccessor));
             }
             else
             {
                 return 
             }
         }
再来看看DEM的配置在哪里和XML内容吧
C:\Program Files\NASA\World Wind 1.4\Config\Earth.xml
配置内容:
?xml version="1.0" encoding="UTF-8"?>
         //黄色之间的XML就是一个TerrainAccessor配置
        
             http://worldwind25.arc.nasa.gov/wwelevation/wwelevation.aspx
             srtm30pluszip
             20.0
             12
             150
             Int16
             bil
             zip
        
        
            
                 90.0
            
            
                 -90.0
            
            
                 -180.0
            
            
                 180.0
            
        
接着上面的讲NltTerrainAccessor类76行代码GetElevationAt(double latitude, double longitude, double targetSamplesPerDegree)方法。
获取特定点的高程值
         /// Get terrain elevation at specified location.  
         /// 
         /// Latitude in decimal degrees.
         /// Longitude in decimal degrees.
         /// 
         /// Returns 0 if the tile is not available on disk.
         public override float GetElevationAt(double latitude, double longitude, double targetSamplesPerDegree)
         {
             try
             {
                 if (m_terrainTileService == null || targetSamplesPerDegree < World.Settings.MinSamplesPerDegree)
                     return 0;
                 if (m_higherResolutionSubsets != null)
                 {
                     foreach (TerrainAccessor higherResSub in m_higherResolutionSubsets)
                     {
                         if (latitude > higherResSub.South && latitude < higherResSub.North &&
                             longitude > higherResSub.West && longitude < higherResSub.East)
                         {
                             return higherResSub.GetElevationAt(latitude, longitude, targetSamplesPerDegree);
                         }
                     }
                 }
                //自己可以看看如何完成TerrainTile的初始化构建的
                 TerrainTile tt = m_terrainTileService.GetTerrainTile(latitude, longitude, targetSamplesPerDegree);
                 TerrainTileCacheEntry ttce = (TerrainTileCacheEntry)m_tileCache[tt.TerrainTileFilePath];
                 if (ttce == null)
                 {
                     ttce = new TerrainTileCacheEntry(tt);
                     AddToCache(ttce);
                 }
                 if (!ttce.TerrainTile.IsInitialized)
                     ttce.TerrainTile.Initialize();
                 ttce.LastAccess = DateTime.N
                //获取高程值
                 return ttce.TerrainTile.GetElevationAt(latitude, longitude);
             }
             catch (Exception)
             {
             }
             return 0;
         }
上面获取高程值的关键:TerrainTile类的330行的GetElevationAt(double latitude, double longitude)方法
public float GetElevationAt(double latitude, double longitude)
         {
             try
             {
                 double deltaLat = North - 
                 double deltaLon = longitude - W
//TileSizeDegrees为当前级别下瓦片的度数大小
//计算方法:158行tile.TileSizeDegrees = m_levelZeroTileSizeDegrees * Math.Pow(0.5, tile.TargetLevel);
//注意思考:SamplesPerTile-1为什么是减去1?传进来的SamplesPerTile=43而不是44?
//如果传入的是44,这里应该减2
                 double df2 = (SamplesPerTile-1) / TileSizeD
                 float lat_pixel = (float)(deltaLat * df2);
                 float lon_pixel = (float)(deltaLon * df2);
                 //这里是将点,近似成包含点的最小正方形(经纬度取整)
                 int lat_min = (int)lat_
                 int lat_max = (int)Math.Ceiling(lat_pixel);
                 int lon_min = (int)lon_
                 int lon_max = (int)Math.Ceiling(lon_pixel);
                 if(lat_min >= SamplesPerTile)
                     lat_min = SamplesPerTile - 1;
                 if(lat_max >= SamplesPerTile)
                     lat_max = SamplesPerTile - 1;
                 if(lon_min >= SamplesPerTile)
                     lon_min = SamplesPerTile - 1;
                 if(lon_max >= SamplesPerTile)
                     lon_max = SamplesPerTile - 1;
                 if(lat_min < 0)
                     lat_min = 0;
                 if(lat_max < 0)
                     lat_max = 0;
                 if(lon_min < 0)
                     lon_min = 0;
                 if(lon_max < 0)
                     lon_max = 0;
                 float delta = lat_pixel - lat_
                 //根据外矩形四顶点的经纬度分别插值计算中间线的高程
                 float westElevation =
                     ElevationData[lon_min, lat_min]*(1-delta) +
                     ElevationData[lon_min, lat_max]*
                 float eastElevation =
                     ElevationData[lon_max, lat_min]*(1-delta) +
                     ElevationData[lon_max, lat_max]*
             //利用插值计算点的高程值
                 delta = lon_pixel - lon_
                 float interpolatedElevation =
                     westElevation*(1-delta) +
                     eastElevation*
                 return interpolatedE
             }
             catch
             {
             }
             return 0;
         }
public float[,] ElevationData就是存放当前瓦片所有样本点高程值的数值。这是通过Initialize()中读取DEM(.bil)文件来获取的。
读取BIL文件高程数据
         /// This method initializes the terrain tile add switches to
         /// Initialize floating point/int 16 tiles
         /// 
         public void Initialize()
         {
             if(IsInitialized)
                
             if(!File.Exists(TerrainTileFilePath))
             {
                 // Download elevation
                 if(request==null)
                 {
                     using( request = new TerrainDownloadRequest(this, m_owner, Row, Col, TargetLevel) )
                     {
                         request.SaveFilePath = TerrainTileFileP
                         request.DownloadInForeground();
                     }
                 }
             }
             if(ElevationData==null)
                 ElevationData = new float[SamplesPerTile, SamplesPerTile];
             if(File.Exists(TerrainTileFilePath))
             {
                 // Load elevation file
                 try
                 {
                     // TerrainDownloadRequest's FlagBadTile() creates empty files
                     // as a way to flag "bad" terrain tiles.
                     // Remove the empty 'flag' files after preset time.
                     try
                     {
                         FileInfo tileInfo = new FileInfo(TerrainTileFilePath);
                         if(tileInfo.Length == 0)
                         {
                             TimeSpan age = DateTime.Now.Subtract( tileInfo.LastWriteTime );
                             if(age < m_owner.TerrainTileRetryInterval)
                             {
                                 // This tile is still flagged bad
                                 IsInitialized = 
                             }
                             else
                             {
                                 // remove the empty 'flag' file
                                 File.Delete(TerrainTileFilePath);
                             }
                            
                         }
                     }
                     catch
                     {
                         // Ignore any errors in the above block, and continue.
                         // For example, if someone had the empty 'flag' file
                         // open, the delete would fail.
                     }
     //读取BIL文件数据的关键代码,可以被我们借鉴使用
                     using( Stream s = File.OpenRead(TerrainTileFilePath))
                     {
                         BinaryReader reader = new BinaryReader(s);
                         if(m_owner.DataType=="Int16")
                         {
                             for(int y = 0; y < SamplesPerT y++)
                                 for(int x = 0; x < SamplesPerT x++)
                                     ElevationData[x,y] = reader.ReadInt16();
                         }
                         if(m_owner.DataType=="Float32")
                         {
                             for(int y = 0; y < SamplesPerT y++)
                                 for(int x = 0; x < SamplesPerT x++)
                                 {
                                     ElevationData[x,y] = reader.ReadSingle();
                                 }
                         }
                         IsInitialized = 
                         IsValid = 
                     }
                    
                 }
                 catch(IOException)
                 {
                     // If there is an IO exception when reading the terrain tile,
                     // then either something is wrong with the file, or with
                     // access to the file, so try and remove it.
                     try
                     {
                         File.Delete(TerrainTileFilePath);
                     }
                     catch(Exception ex)
                     {
                         throw new ApplicationException(String.Format("Error while trying to delete corrupt terrain tile {0}", TerrainTileFilePath), ex);
                     }
                 }
                 catch(Exception ex)
                 {
                     // Some other type of error when reading the terrain tile.
                     throw new ApplicationException(String.Format("Error while trying to read terrain tile {0}", TerrainTileFilePath), ex);
                 }
             }
         }
另注:SRTM的高程数据存放路径如下图:(DEM跟影像也是分级存放的,存放方式一致)
至此,如何加载DEM数据创建网格的过程已经分析完了。
接下来,继续分析QuadTile.cs中CreateElevatedMesh()和Render方法,内容主要是DirectX编程,稍后添加&&
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
上一篇:下一篇:
相关经验教程
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.002 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
论文写作技巧

我要回帖

更多关于 wind数据查询 的文章

 

随机推荐