c#语言中,如何读取SHP文件?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#语言中,如何读取SHP文件?相关的知识,希望对你有一定的参考价值。
1、直接解析shp中信息,怎么写?2、自己写一个存取编辑的shp组文件?
这需要先做一个windows窗口应用程序,然后才能存取 这个shp文件 参考技术A 知道shp的格式是关键,网上有代码。或是用开源的组件,关键shp文件的。如何在 C# 中读取 .wav 文件的比特率
【中文标题】如何在 C# 中读取 .wav 文件的比特率【英文标题】:How to read Bit rate of .wav file in C# 【发布时间】:2014-03-01 08:00:00 【问题描述】:鉴于我有一个 .wav 文件,在 C# 中读取其比特率属性的最佳方法是什么。 我试过壳牌,问了一个问题Is "Bit rate" property fixed in index 28?,没有答案。此外,我现在认为 Shell 不是读取音频文件属性的最佳方式。我研究了不同的开源媒体库,找不到太多。
TagLib#:这个工作正常,但有两个问题。在某些比特率非常低(例如小于 30)的情况下,它不能反映实际比特率,它只返回 0。其次,我不确定是否可以将其用于商业用途。许可证上写着http://opensource.org/licenses/LGPL-2.1
NAudio:根本不公开任何属性来读取比特率,所以我必须计算它。经过研究,我得到了这个公式来计算比特率。 比特率 = 采样率 * 通道 * BitsPerSample。这在大多数情况下都可以正常工作,但是如果某些 .wav 文件的 BitsPerSample = 0 则会失败。是的,文件很好,我可以播放,但 BitsPerSample 仍然为 0。
MediaInfo:同样没有直接的属性,必须遍历音频文件的所有属性,然后搜索“整体比特率”。而且项目中还要添加两个dll,一个是.net wraper,另一个是实际的dll。
抱歉这么长的总结,但我不想问“嘿,我怎样才能获得音频文件的比特率”而不显示我已经做过的事情。 那么,如果你有一个 .wav 音频文件,你会使用什么库/方法来获取比特率?
【问题讨论】:
【参考方案1】:使用 NAudio,比特率是通过 WaveFormat
结构的 AverageBytesPerSecond
成员计算的:
using (var reader = new WaveFileReader(filename))
bitrate = reader.WaveFormat.AverageBytesPerSecond * 8;
这适用于所有未压缩的音频格式和大多数压缩格式。 WAV 文件格式是一种容器格式,实际上可以在 any 编解码器中包含音频,尽管它最常见的用途是 PCM。但并非所有编解码器都是 CBR(恒定比特率)。有些具有可变比特率,因此AverageBytesPerSecond
属性可能是一个估计值。
【讨论】:
谢谢马克和@Jim,突然间我得到了两个解决方案,都可以工作。只是为来到这个线程寻找比特率的人添加最后一点:我们需要将该比特率除以 1000 以获得 kbps。【参考方案2】:您可以轻松读取文件中偏移量 28 处的值。
int bitrate;
using (var f = File.OpenRead(filename))
f.Seek(28, SeekOrigin.Begin);
byte[] val = new byte[4];
f.Read(val, 0, 4);
bitrate = BitConverter.ToInt32(val, 0);
这应该适用于未压缩的 WAV 文件(最常见的类型)。见https://ccrma.stanford.edu/courses/422/projects/WaveFormat/。
【讨论】:
感谢 Jim,这个想法似乎是正确的,但它不起作用。它向我返回“8000”以获取比特率为 64kbps 的有效 .wav 文件。尝试了不同的 .wav 文件,没有运气。 该值需要乘以 8,因为这是每秒平均字节数,而不是比特率。以上是关于c#语言中,如何读取SHP文件?的主要内容,如果未能解决你的问题,请参考以下文章